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和测试目录。使用make all
命令,只有SRC目录文件应编译。但是在我的情况下,测试目录文件也与SRC目录一起编译。使用make test
命令仅测试目录文件进行编译。由于测试文件取决于SRC文件,因此make all
发生错误。有人可以帮助我解决这个问题吗?
好吧,这是一个起动器:
您应该在每个目录中提供知道如何构建 lib
和 test
的makefiles。显然test
取决于lib
。
然后您可以将行更改为
lib:
for dir in $(LIB_DIRS); do
$(MAKE) -C $$dir;
done
to
lib:
for dir in $(LIB_DIRS); do
$(MAKE) -C $$dir lib; #<- notice the target
done
,test_lib
类似。否则,当前变量集将不可能,因为子制品不知道该怎么做。