Makefile GNU make:在所有其他目标之后运行目标,而不考虑失败?
我有一个生成文件,其中包含一些生成一些数据的目标(比如Makefile GNU make:在所有其他目标之后运行目标,而不考虑失败?,makefile,gnu-make,Makefile,Gnu Make,我有一个生成文件,其中包含一些生成一些数据的目标(比如data1到dataN,所有数据都依赖于这些目标),还有一个prettify目标,它迭代输出并创建一个漂亮的报告。(注意:有许多dataN目标,并且生成文件是机器生成的) 一些dataX目标偶尔会失败,但我还是想运行prettify,因此prettify不依赖于alldata 有没有一种方法可以在一次调用make中运行相当于make-kalldata | | make prettify,使make尽最大努力构建所有数据,然后在生成的任何数据上
data1
到dataN
,所有数据都依赖于这些目标),还有一个prettify
目标,它迭代输出并创建一个漂亮的报告。(注意:有许多dataN
目标,并且生成文件是机器生成的)
一些dataX
目标偶尔会失败,但我还是想运行prettify
,因此prettify
不依赖于alldata
有没有一种方法可以在一次调用make中运行相当于
make-kalldata | | make prettify
,使make尽最大努力构建所有数据,然后在生成的任何数据上构建我的报告?make通常在命令失败时退出。如果在失败的命令后面加上“| | true”,make将继续执行,这意味着您的修饰也将被执行 您可以使用任何喜欢的控制逻辑编写递归目标。这不会阻止某人从命令行运行目标,因此您无法强制执行您的逻辑,但这对于方便的目标来说是很好的。也许是这样的:
.PHONY: all
all:
$(MAKE) -k -$(MAKEFLAGS) alldata \
; rc=$$? \
; $(MAKE) $(MAKEFLAGS) prettify \
; exit $$rc
你可以,或者你可以。也许是因为
-command
更简洁?(我故意漏掉了@
,这是一个反模式IMHO。)