我有一些 C++ 类,每个类都放入他自己的文件夹中,其中包含一个 makefile、test.cpp 用于测试目的等。
Main folder
|-> Class1 folder
|-> Class2 folder
|-> Class2.1 folder
|-> Class2 folder
我有一个主要项目,必须包括这些类。我正在尝试将所有子 makefile 包含到主 makefile 中。
我试过“INCLUDE POO/makefile”,但这个解决方案有两个问题:
- 子 makefile 的路径不正确,因此找不到文件(“没有构建目标 'Vector3D.cpp' 的规则”)。
- “test.cpp”文件被覆盖,可能是因为路径问题。(“警告:覆盖目标的配方......”)
我希望所有makefile都独立,所以我可以将类文件夹复制/粘贴到一个新项目中并且它仍然可以工作,或者我可以单独执行makefile而不对其进行更改。
所以问题是:如何(正确地)将一个makefile包含到另一个makefile中?
示例,仅用于测试目的。
主生成文件(简化)
include Vector3D/makefile
include Color/makefile
CPP = g++
CXXFLAGS = $(CXXINCS) -Wall -O0
all: main
main: main.o Vector3D.o Color.o
$(CPP) main.o Vector3D.o Color.o -o main
main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
子makefile示例(简化)
#Vector3D
CPP = g++
CXXFLAGS = $(CXXINCS) -Wall -O0
all: test
test: Vector3D.o test.o
$(CPP) Vector3D.o test.o -o test
Vector3D/test.o: test.cpp
$(CPP) -c test.cpp -o test.o $(CXXFLAGS)
Vector3D.o: Vector3D.cpp Vector3D.hpp
$(CPP) -c Vector3D.cpp -o Vector3D.o $(CXXFLAGS)
Color/makefile 与 Vector3D 类似。