我有一个包含规则的makefile来构建系统,测试并运行它们.最后一项只需调用一个shell脚本即可执行.除此之外,这阻止了我并行运行测试.
我有以下变量:
TEST_SRC=$(wildcard tests/*.c)
TESTS=$(patsubst %.c,%,${TEST_SRC})
Run Code Online (Sandbox Code Playgroud)
并使用规则构建测试
$(TESTS): %: %.c
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
Run Code Online (Sandbox Code Playgroud)
有可能(如果是这样,如何?)创建一个规则"测试",当运行时,将执行$TESTS
变量中的每个项目?
你可以这样做:
# a separate target to run each test
RUN_TESTS = $(addprefix run_, $(TESTS))
# a pattern rule for those targets, which will remake the test iff neccessary
.PHONY: $(RUN_TESTS)
$(RUN_TESTS):run_%:%
./$<
# One Rule to Ring Them All, One Rule to... sorry.
.PHONY: tests
tests: $(RUN_TESTS)
Run Code Online (Sandbox Code Playgroud)