gpt4 book ai didi

linux - 如何使用 makefile 创建测试结果

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:22 24 4
gpt4 key购买 nike

我有一个 C 程序 - example.c,编译后我想用它来生成测试结果。./tests/%.in 下的每个文件都是一个测试用例。

我想从他们每个人那里创建./tests/%.out

我试过类似的东西:

all: test_results

example: example.c
gcc example.c -o example

test_results: example ./tests/%.out

./tests/%.out: ./tests/%.in
./example $^ > $@

但我收到错误,而且它似乎并没有真正完成这项工作。

最佳答案

% 是模式规则中的通配符,如果要获取目录下的所有文件,请使用 *wildcard 函数代替:

all: test_results

example: example.c
gcc example.c -o example

TEST_INPUT = $(wildcard tests/*.in)
test_results: example $(TEST_INPUT:.in=.out)

./tests/%.out: ./tests/%.in
./example $^ > $@

此外,您可以去掉路径的 ./ 前缀,并可能希望将 alltest_results 规则设置为 phony 。您的 test_results 规则的 example 依赖项也放错了地方(如果 example 它不会更新 .out 文件已过时),它应该是 .out 文件本身的依赖项:

.PHONY: all
all: test_results

example: example.c
gcc example.c -o example

TEST_INPUT = $(wildcard tests/*.in)
.PHONY: test_results
test_results: $(TEST_INPUT:.in=.out)

tests/%.out: tests/%.in example
./example $< > $@

关于linux - 如何使用 makefile 创建测试结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26933689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com