【发布时间】:2015-05-13 09:29:22
【问题描述】:
LIB_DIRS = abcd xyz pqr mnq ghj
SER_DIRS = klm
.PHONY: default build lib service clean distclean
TEST_DIRS = abcd xyz pqr
test_lib :
for dir in $(TEST_DIRS); do \
$(MAKE) -C $$dir; \
done
TESTS := $(addprefix TEST_, $(TEST_DIRS))
run : $(TESTS)
TEST_%:
./$*/test/$*_test --log_level=message
test : test_lib run
default: all
all: build lib service
lib:
for dir in $(LIB_DIRS); do \
$(MAKE) -C $$dir; \
done
每个 LIB_DIR 都有一个 src 和 test 目录。使用make all 命令只需要编译 src 目录文件。但在我的情况下,测试目录文件也与 src 目录一起编译。而使用make test 命令仅编译测试目录文件。由于测试文件依赖于 src 文件,make all 对测试文件会发生错误。有人可以帮我解决这个问题吗?
【问题讨论】:
-
看来src目录是
abcd、xyz和pqr;测试目录也是abcd、xyz和pqr。你想编译 src 目录下的文件,而不是 test 目录下的文件? -
是的。当我说
make all时,应该只编译src目录。当我说make test时,应该只编译test目录。 -
我认为 Beta 要求的是,
src目录是什么?您继续使用该术语,但您的 makefile 中没有与src相关的任何内容。src是指lib目标和LIB_DIRS变量的内容吗?会出现什么错误?您的意思是在src目录之前构建测试目录吗?您的问题令人困惑,不清楚您到底要做什么。 -
对造成的混乱表示歉意。是的,
src表示 LIB_DIRS,test表示 TEST_DIRS。test目录在src目录之前编译。 -
在您的编辑中,您向
LIB_DIRS添加了两个目录,但问题仍然存在:您说您要编译一组目录而不是另一组,但其中一个是 目录abcd是LIB_DIRS 的成员,也是TEST_DIRS 的成员;奥林匹斯的所有神都不能编译一个但不能编译另一个,这是不可能,我投票关闭。