多个目标的构建后步骤

时间:2014-04-11 15:45:22

标签: makefile post-build-event

我有一个makefile,它有多个目标,用于输出不同格式的数据,例如: make htmlmake pdfmake 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步骤?

1 个答案:

答案 0 :(得分:8)

不幸的是,你必须为每一个写一个不同的规则。但您可以使用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版本的目标pdftxtreal-real-版本执行实际工作,然后在完成后,构建后的内容将作为基本目标(htmlpdf和{{1}中的配方完成})。

这个规则只是一个简写,所以你不必全部写出来;结果是一样的:

txt