Makefile 多个目标的构建后步骤
我有一个makefile,它有多个输出不同格式数据的目标,例如,Makefile 多个目标的构建后步骤,makefile,post-build-event,Makefile,Post Build Event,我有一个makefile,它有多个输出不同格式数据的目标,例如,生成html,生成pdf,生成txt等。我希望在使用这些选项时运行预构建和后构建步骤。我已经对预构建步骤进行了分类,但不确定如何使后构建步骤正常工作 .PHONY: html pdf txt pre-build post-build pre-build: do-pre-build-stuff post-build: do-post-build-stuff html: data.dat generate-
生成html
,生成pdf
,生成txt
等。我希望在使用这些选项时运行预构建和后构建步骤。我已经对预构建步骤进行了分类,但不确定如何使后构建步骤正常工作
.PHONY: html pdf txt pre-build post-build
pre-build:
do-pre-build-stuff
post-build:
do-post-build-stuff
html: data.dat
generate-html data.dat
pdf: data.dat
generate-pdf data.dat
txt: data.dat
generate-txt data.dat
data.dat: pre-build
generate-some-data > data.dat
如何让
post build
步骤在每个目标之后运行?不幸的是,您必须为每个目标编写不同的规则。但您可以通过以下方法使其更简单:
这将创建目标html
、pdf
和txt
,这取决于real-
版本。real-
版本执行实际工作,然后在完成后,构建后的内容作为基本目标(html
,pdf
,和txt
)中的配方完成
这条规则只是一个速记,所以你不必把它全部写出来;结果是相同的:
html: real-html
do-post-build-stuff
pdf: real-pdf
do-post-build-stuff
txt: real-txt
do-post-build-stuff
这看起来很有希望,我马上就去试试。你能解释一下第一行发生了什么吗?我添加了一个指向make文档的指针,描述了静态模式规则和一些信息。为什么
post-build stuff
不能成为它自己的食谱,并在满足先决条件后调用?它将如何“调用”?规则不是功能。在完成所有先决条件后(如果需要更新目标),将调用规则的配方。在这里,他们希望运行makepdf
并只构建pdf,然后也进行后期构建。
html: real-html
do-post-build-stuff
pdf: real-pdf
do-post-build-stuff
txt: real-txt
do-post-build-stuff