3

我有一个包含包含语句的生成文件。我无法控制包含的 makefile 的内容。不过,我希望能够在“一些”(不是全部)目标之前添加一些预处理步骤。考虑以下示例:

install:
      @echo "install target"

include othermakefile.mk

othermakefile.mk 也包含安装目标。如果我运行此脚本,make 会发出警告并忽略第一个安装目标。

4

1 回答 1

3

没有比这更容易的了:

install: pre_install

.PHONY: pre_install
pre_install:
    do preinstallation things

include othermakefile.mk

编辑:
如果您想在preqs 或其任何 preqspre_install之前运行,这是一种方法。它既粗糙又丑陋,但它可以完成工作:install

install: pre_install
    $(MAKE) -f othermakefile.mk $@

.PHONY: pre_install
pre_install:
    do preinstallation things

请注意,这不一定会重建 的所有先决条件install,因此其中一些可能会保持旧状态并且不会反映 的效果pre_install。如果这还不够好,并且您想要pre_install所有其他先决条件之前,您可以添加一个选项标志:

install: pre_install
    $(MAKE) --always-make -f othermakefile.mk $@

现在 Make 将假定所有目标都已过时,并从头开始重建(之后pre_install)。

于 2012-06-20T17:47:23.237 回答