首页 > 解决方案 > 如何创建跨多个目录查找文件并将目标文件放入不同目录的 Makefile?

问题描述

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

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

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

标签: c++cmakefilegnu-make

解决方案


您可以使用以下语法将变量传递给您的 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)

推荐阅读