如何创建一个跨多个目录查找文件并将目标文件放入不同目录的 Makefile?

How to create a Makefile that finds files across multiple directories and puts the object files into a different directory?

我是 Makefile 的初学者,我想做的事情非常复杂,如果有人可以帮助我,请考虑也向我解释事情是如何工作的,以便我可以学习和理解。当然,我进行了研究,但找不到有帮助的东西。所以我们有以下项目:

src
 | File1.cpp
 | File2.cpp
 | File3.cpp
src2
 | File4.cpp
 | File5.cpp
 | File6.cpp
obj
Makefile

所以我想要一个 Makefile,它可以让我选择尽可能多的目录来搜索源代码文件(在这种情况下 src1src2 然后,将将生成的目标文件放入一个目录中(在本例中为 obj)。是的,或者类似的东西,或者你可以做的任何可能的东西......哈哈,明白了吗?make aaaaaah 好的,我会停止...... .

您可以使用以下语法将变量传递给您的 makefile:

$ make SOMEVAR=SOMEVALUE

这个可以用来传递你要建的文件夹:

$ make SRC=src1    # or src, src2, ...

makefile可以是这样的 (你只提到了obj文件,所以我只加了那个):

SRC_FILES=$(wildcard $(SRC)/*.cpp)
OBJ_FILES=$(patsubst $(SRC)/%.cpp,obj/%.o, $(SRC_FILES))

all:$(OBJ_FILES)
    @echo "done!"    

obj/%.o:$(SRC)/%.cpp
    @echo "building $@"
    @$(CXX) -o $@ -c $< $(CFLAGS)