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

我有一个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

如何在每个目标之后运行构建后步骤?

解决方法

不幸的是,你必须为每一个一个不同的规则.但是你可以用 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.真实版本执行实际工作,然后在完成后,构建后的内容将作为基本目标(html,pdf和txt)中的配方完成.

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

html: real-html
        do-post-build-stuff

pdf: real-pdf
        do-post-build-stuff

txt: real-txt
        do-post-build-stuff

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...