makefile:编译SRC和测试目录时出错


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发生错误。有人可以帮助我解决这个问题吗?

好吧,这是一个起动器:

您应该在每个目录中提供知道如何构建 libtest的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类似。否则,当前变量集将不可能,因为子制品不知道该怎么做。

最新更新