我有一个包含include语句的makefile。我无法控制包含的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
编辑:
如果要在
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
之后)。