多个目标的构建后步骤

Dan*_*bbs 3 makefile post-build-event

我有一个具有多个目标进行不同格式的输出数据,例如一个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
Run Code Online (Sandbox Code Playgroud)

如何post-build在每个目标之后运行步骤?

Mad*_*ist 8

不幸的是,你必须为每一个写一个不同的规则.但是您可以使用静态模式规则使其更简单:

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
Run Code Online (Sandbox Code Playgroud)

这会创建目标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
Run Code Online (Sandbox Code Playgroud)