具有两个同名目标的 Makefile

2024-05-18

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

install:
      @echo "install target"

include othermakefile.mk

其他makefile.mk包含install目标也是如此。如果我运行此脚本,make 会发出警告并忽略第一个install target.


没有什么比这更容易的了:

install: pre_install

.PHONY: pre_install
pre_install:
    do preinstallation things

include othermakefile.mk

EDIT:
如果你想跑步pre_install before install 或其任何先决条件,这是一个方法。它既粗糙又丑陋,但它可以完成工作:

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

.PHONY: pre_install
pre_install:
    do preinstallation things

请注意,这不一定会重建所有先决条件install,因此其中一些可能会保留在原来的状态并且不反映pre_install。如果这还不够好,而你想要pre_install before all对于其他先决条件,您可以添加一个选项标志:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有两个同名目标的 Makefile 的相关文章

随机推荐