具有两个具有相同名称的目标的Makefile

时间:2012-06-20 17:35:40

标签: makefile

我有一个包含include语句的makefile。我无法控制所包含的makefile的内容。不过,我希望能够在“某些”(并非所有)目标之前添加一些预处理步骤。请考虑以下示例:

install:
      @echo "install target"

include othermakefile.mk

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

1 个答案:

答案 0 :(得分:3)

没有比这更容易了:

install: pre_install

.PHONY: pre_install
pre_install:
    do preinstallation things

include othermakefile.mk

修改:
如果您想在pre_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之后)。