我有一個包含include語句的makefile。我無法控制包含的makefile的內容。不過,我希望能夠在「一些」(不是全部)目標之前添加一些預處理步驟。請看下面的例子:具有兩個具有相同名稱的目標的Makefile
install:
@echo "install target"
include othermakefile.mk
othermakefile.mk包含安裝目標爲好。如果我運行這個腳本,會發出警告並忽略第一個目標的安裝。
我有一個包含include語句的makefile。我無法控制包含的makefile的內容。不過,我希望能夠在「一些」(不是全部)目標之前添加一些預處理步驟。請看下面的例子:具有兩個具有相同名稱的目標的Makefile
install:
@echo "install target"
include othermakefile.mk
othermakefile.mk包含安裝目標爲好。如果我運行這個腳本,會發出警告並忽略第一個目標的安裝。
沒有什麼簡單:
install: pre_install
.PHONY: pre_install
pre_install:
do preinstallation things
include othermakefile.mk
編輯:
如果你想之前install
或任何其preqs的運行pre_install
,這裏是一個辦法。這是原油和醜陋,但它的工作:
install: pre_install
$(MAKE) -f othermakefile.mk [email protected]
.PHONY: pre_install
pre_install:
do preinstallation things
注意,這並不一定會重建所有先決條件install
,所以他們中的一些可能會留在自己的老態,而不是反映pre_install
的影響。如果這還不夠好,你其他先決條件的所有之前要pre_install
,你可以添加一個選項標誌:
install: pre_install
$(MAKE) --always-make -f othermakefile.mk [email protected]
現在做將承擔所有目標都過時了,從地上重建(在pre_install
之後)。
然後將你的目標重命名爲不太可能發生衝突的東西(例如'foo_blah_install')。 –
正如我所說的,當用戶輸入「make install」時,我希望腳本運行一些**預處理**命令。我不想更改目標的名稱。 – Javad
相關:http://stackoverflow.com/q/1644920/86967 – nobar