我有一个 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
追逐每个目标的步骤?
不幸的是,您必须为每个规则编写不同的规则。但你可以用一个更简单的方法静态模式规则 http://www.gnu.org/software/make/manual/html_node/Static-Usage.html:
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
, and txt
这取决于real-
版本。这real-
版本执行实际工作,然后在完成后构建后的内容作为基本目标中的配方完成(html
, pdf
, and txt
).
该规则只是一个简写,因此您不必将其全部写出来;结果是相同的:
html: real-html
do-post-build-stuff
pdf: real-pdf
do-post-build-stuff
txt: real-txt
do-post-build-stuff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)