我有一个 makefile,它有多个目标,用于以不同的格式输出数据,例如make html
, make pdf
, make 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
步跑在每个目标之后?
最佳答案
不幸的是,您必须为每个规则编写不同的规则。但是您可以使用 static pattern rule 使其更简单:
html pdf txt: %: real-%
do-post-build-stuff
real-html: data.dat
generate-html data.dat
real-pdf: data.dat
generate-pdf data.dat
real-txt: data.dat
generate-txt data.dat
这将创建目标
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
关于makefile - 多个目标的构建后步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017069/