gpt4 book ai didi

makefile - 即使先决条件失败,Makefile 目标也可以调用命令吗?

转载 作者:行者123 更新时间:2023-12-01 10:13:11 24 4
gpt4 key购买 nike

这是一个骨架 Makefile 只是为了更容易地描述问题:

all_tests : unit_tests other_tests_1 other_tests_2 ... other_tests_N

unit_tests : set1_summary.txt set2_summary.txt ... setN_summary.txt

%_summary.txt : %_details.txt
perl createSummary.pl --in $^ -out $@

%_details.txt : test_harness
./test_harness --test-set $*

所以我有一个测试运行器,它生成一个包含详细结果的文件,然后是一个过滤机制来创建一个摘要文件。

现在,如果测试集中的任何项目失败,测试运行器应用程序将返回错误代码,这将正确中止“all_tests”目标并且永远不会调用 other_test 目标。但是,我想无条件地运行细节 -> 摘要转换,因为即使测试运行失败,这也是相关的。

我尝试了一些不同的变体,但我能开始工作的唯一方法是将整个命令链包装到 Perl 脚本中,存储第一个命令的结果并将其用作整个脚本的返回值。

但这并不是一个非常巧妙的解决方案,特别是因为“实际”命令集比这个骨架显示的要复杂一些。你知道任何纯粹的基于 GNU Make 的方法来完成这个吗?

最佳答案

你可以有一个特殊的规则来递归调用 Make 两次,像这样:

.PHONY: test
test :
make all_tests ; make summary

唯一的缺点是顶部 make 进程的退出状态将不再指示测试的成功/失败,但是如果您想使用 $? shell 变量。

关于makefile - 即使先决条件失败,Makefile 目标也可以调用命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634178/

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