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