makefile - 多个目标的构建后步骤

标签 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

我如何获得 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-版本执行实际工作,然后在完成后构建后的内容作为基本目标( htmlpdftxt )中的配方完成。

该规则只是一个速记,因此您不必全部写出来;结果是相同的:
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/

相关文章:

xcode - 如何使用 make 文件在 Xcode 中编译项目

makefile - 制作文件预处理器指令

visual-studio-2012 - Visual Studio 2012 签名

visual-studio - VS Post Build Event,复制解决方案文件夹上一层?

windows - 在 Visual Studio 中使用构建后事件构建控制台

makefile - 如何在make中分割字符串?

c++ - 在可执行文件中嵌入一串编译器选项 (Visual Studio)

c - Makefile:分离源和对象

macros - Visual Studio 2012 : How to perform a conditional post-build event

c# - 将一个项目的输出复制到另一个项目的输出