0
在我的项目中我有一个测试/文件夹。在这个文件夹中,每个cpp文件将被构建到Build/test /文件夹中的一个可执行文件中。如何在makefile中使用并行的依赖关系列表?
我设置了以下变量。
BUILD_DIR = Build
TEST_SOURCES = $(wildcard test/*.cpp)
TEST_EXEC = $(addprefix $(BUILD_DIR)/,$(basename $(TEST_SOURCES)))
然后我创建了以下规则。
$(TEST_EXEC): $(TEST_SOURCES)
@mkdir -p $(@D)
$(CC) $(INCLUDES) $^ -o [email protected]
test: $(TEST_EXEC)
all: test
现在我的测试目录中有两个cpp文件(test1.cpp和test2.cpp)。这个问题是test1的目标实际上只依赖于test1.cpp而不是test2.cpp。
/usr/local/gcc-7.2/bin/g++-7.2 -I/usr/local/gcc-7.2/include/ -Iinclude/ test/test1.cpp test/test2.cpp -o Build/test/test1
/tmp/ccAQUS3n.o: In function `main':
test2.cpp:(.text+0x0): multiple definition of `main'
/tmp/ccQ8lewg.o:test1.cpp:(.text+0x0): first defined here
Makefile:10: recipe for target 'Build/test/test1' failed
有没有一种方法只从$ TEST_SOURCES中取得相应的依赖关系,而忽略其他。我wan't有...
Build/test/test1: test/test1.cpp
Build/test/test2: test/test2.cpp
,而不是
Build/test/test1: test/test1.cpp test/test2.cpp
Build/test/test2: test/test1.cpp test/test2.cpp