美好的一天,
考虑Makefile的以下部分:
OBJECTS := $(patsubst %.cpp,%,$(wildcard Tests/*.cpp))
TEST_EXECUTABLE := $(patsubst Tests/%, Tests/run-%,$(OBJECTS))
TESTF_EXECUTABLE := $(patsubst Tests/%, Tests/runF-%,$(OBJECTS))
all: $(OBJECTS)
test: $(TEST_EXECUTABLE)
test_formatted: $(TESTF_EXECUTABLE)
runF-%:%
./$^ --output_format=XML --log_level=test_suite > $(^)-report.xml
run-%:%
./$^
摘要:
现在关注 TEST_EXECUTABLE ,它包含Test /文件夹中相应c ++文件的目标对象文件列表。它会生成大量可执行文件,因此我想调用 make test 或 make test_formatted 中的所有可执行文件。为此,测试和 test_formatted 调用运行和 runF 并执行可执行文件。
问题:
我对 runF - %的理解是,当我有 run-Tests / executable 时,它应该匹配 runF - 和的模式%然后替换为测试/可执行文件,因此 ./ Tests / Executable 应该可以使用。但事实并非如此。当我这样做时,我得到了
make: *** No rule to make target `run-Tests/executable', needed by `test'. Stop.
我认为这种模式应该被认可,但显然不是。相反,我不小心搞乱只是为了让测试运行,这就是如何到达上面显示的Makefile。换句话说,我必须在可执行文件之前运行 - ,这根本没有意义。在这种情况下它不应该工作,因为运行 - %只有%作为可执行文件,而不是找到可执行文件。这确实让人感觉不舒服。虽然我的档案处于工作状态,但如果有人澄清了一些概念上的误解,我会很高兴。提前谢谢。