我想在子文件夹中生成我的obj文件,我试过这个:
lib/*.o: source/*.cpp
clang++ $(CC_FLAGS) -c -Iinclude source/*.cpp
但它仍然在项目根目录中而不是在lib /
中生成obj文件我想要的项目树:
Project/
source/(cpp files)
include/(header files)
lib/(obj files)
答案 0 :(得分:0)
你没有显示你当前的makefile,但我怀疑它是错误的。但是,由于我们无法看到它,我们将单独留下它。
编译器不支持将多个目标文件写入其他目录。如果您传递多个源文件以及-c
标志,那么它将写出多个目标文件,但仅写入当前目录...因为您发现无法在{1}}标志上指定-o
标志编译生成多个输出文件的行。
您可以将食谱更改为:
cd lib && clang++ $(CC_FLAGS) -c -I../include ../source/*.cpp
这将导致所有目标文件被写入lib目录,因为它现在是当前目录。
但是,将它放入makefile并不简单,因为make本身设计为只有一个配方创建一个目标。但是,您现有的makefile也存在此问题,而您也没有显示。