2012-05-28 88 views
0

Suupose執行Makefile文件的具體命令我有一個include指令:在規則部分

include dep/dep.mk

要包括對我的體型其他必要信息。但是,我只希望在特定目標建立後才能包含它。我怎樣才能做到這一點?

例如:

test: foo.c bar.c 
    include dep/dep.mk 

在這種情況下,include不會工作,因爲讓把它理解爲一個shell命令。

+1

有沒有客觀的理由把它「包含在某些目標之後」? –

回答

2

你不能那樣做。如果您使用GNU make的足夠現代的年份,您可以使用$(eval include dep/dep.mk),但請注意,包含的makefile 不能定義任何規則。一旦開始制定目標,即使使用$(eval ...),也不能定義新的規則/目標。

您可以做的最好的就是那些想要包含該文件的命令以遞歸方式調用,以使子文件包含該文件。

但是我同意Eldar;你需要重新考慮你的要求。也許如果你解釋了爲什麼你想這樣做,我們可以給出更好的建議。

+0

由於包含的文件位於另一個git子模塊中,並且Makefile包含來自該子模塊的所需文件。但是,只有在調用所需規則後才能下載子模塊。我想我無法在包含文件之前爲該模塊執行「git submodule update init-- module」。 – Amumu

+0

謝謝。用'eval'解決你的問題。我需要的只是在規則中調用'include'指令,而'eval'爲我完成這項工作。 – Amumu

+0

嗯。對不起,但我再次測試它,並沒有奏效。我想我必須告訴維護者更改Makefile。 – Amumu