我有一个包含包含语句的生成文件。我无法控制包含的 makefile 的内容。不过,我希望能够在“一些”(不是全部)目标之前添加一些预处理步骤。考虑以下示例:
install:
@echo "install target"
include othermakefile.mk
othermakefile.mk 也包含安装目标。如果我运行此脚本,make 会发出警告并忽略第一个安装目标。
我有一个包含包含语句的生成文件。我无法控制包含的 makefile 的内容。不过,我希望能够在“一些”(不是全部)目标之前添加一些预处理步骤。考虑以下示例:
install:
@echo "install target"
include othermakefile.mk
othermakefile.mk 也包含安装目标。如果我运行此脚本,make 会发出警告并忽略第一个安装目标。
没有比这更容易的了:
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
)。