【发布时间】:2015-08-25 14:40:11
【问题描述】:
我的目录结构如下:
tests\
test1.c
test2.c
test3.c
build\
test1
test2
test3
具体来说,我想构建test1.c、test2.c 和test3.c 并在tests\build 中输出可执行文件。
为了实现这一点,我有以下 Makefile sn-p:
TSTS = $(wildcard $(TEST_DIR)/*.c)
EXE = $(patsubst $(TEST_DIR)/%.c,$(TEST_BUILD)/%, $(TSTS))
TEST_DIR = tests
TEST_BUILD = tests/build
$(EXE): $(TSTS)
$(CC) $< $(CFLAGS_OUT) $@ (CFLAGS_LIBS_FLAG)$(LIB_NAME)
这给了我类似的东西:
gcc -L/home/projects/loc/build -Iinclude tests/test1.c -o tests/build/test1 -lsalmalloc
gcc -L/home/projects/loc/build -Iinclude tests/test1.c -o tests/build/test2 -lsalmalloc
gcc -L/home/projects/loc/build -Iinclude tests/test1.c -o tests/build/test3 -lsalmalloc
输出路径正确,但源文件都是tests/test1.c!
忽略include 和其他lib 相关文件,因为我已删除标志以使其简单。本质上,make 正在从单个文件构建测试用例,也就是说,对于单个源文件 test1.c,正在生成三个具有不同名称的构建,而不是每个测试都有自己的构建。我查看了here、here、here 和here,但找不到问题。
我该如何解决这个问题?
【问题讨论】: