使用Makefile从不同目录执行目标文件

时间:2015-04-30 10:18:08

标签: makefile

我有以下Makefile条目:

TEST_DIRS = abcd pqr xyz

test_lib :
        for dir in $(TEST_DIRS); do \
                $(MAKE) -C $$dir; \
        done
run :
        ./abcd/test/abcd_test.o --log_level=message
        ./pqr/test/pqr_test.o --log_level=message
        ./xyz/test/xyz_parser_test.o --log_level=message

test :  test_lib run

我不想为运行目标编写3个单独的命令,而是使其成为通用命令。因此,每次添加新的测试文件时,我都不希望在运行目标下添加新命令。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

假设命名方案是一致的(那些只是奇怪的命名二进制文件,而不是实际的目标文件),那么这样的东西应该有效:

使用shell循环:

run :
        for name in $(TEST_DIRS); do \
            ./$$name/test/$${name}_test.o --log_level=message; \
        done

使用make foreach

run :
        $(foreach name,$(TEST_DIRS),./$(name)/test/$(name)_test.o --log_level=message;)