[英]Makefile: Error while compiling src and test directories
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
for測試文件會發生錯誤。 有人可以幫我解決這個問題嗎?
好吧,這是一個入門者:
您應該在每個目錄中提供Makefile文件,這些文件知道如何構建lib
和test
。 顯然, test
取決於lib
。
然后,您可以將行更改為
lib:
for dir in $(LIB_DIRS); do \
$(MAKE) -C $$dir; \
done
至
lib:
for dir in $(LIB_DIRS); do \
$(MAKE) -C $$dir lib; \ #<- notice the target
done
和test_lib
相似。 否則,由於子變量不知道要做什么,因此當前變量集是不可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.