2015-06-01 62 views
1

the makefile's reference page for include路徑:設置包括其他的makefile

如果指定的名稱不以斜槓開始,該文件是不是 在當前目錄中發現,其他幾個目錄是 搜索。首先,搜索您用'-I'或 '--include-dir'選項指定的任何目錄(請參閱選項摘要)。然後按以下順序搜索以下目錄(如果存在) : prefix/include(通常爲/ usr/local/include 1)/ usr/gnu/include, /usr/local/include,/ usr/include 。

那麼,有沒有辦法從makefile中設置包含其他makefile的include路徑?

我不想通過--include-dir使我每次打電話。

回答

1

從理論上講,您應該可以將這些標誌添加到生成文件本身的MAKEFLAGS變量中。

Communicating Options to a Sub-make

MAKEFLAGS變量也可以,如果你想有一定的選擇,如「-k」(見選項摘要),每次運行make時間設定是有用的。您只需在您的環境中輸入MAKEFLAGS的值即可。您還可以在生成文件中設置MAKEFLAGS,以指定對該生成文件也應該有效的附加標誌。 (請注意,您不能使用MFLAGS這種方式,變量設置僅出於兼容性;化妝不解釋你爲它以任何方式設置的值。)

但快速測試似乎表明,這並未」實際上工作。

我認爲VPATH/vpath可能在這裏有用,但一些快速測試似乎表明它不是。

這就意味着,據我所知,如果你不想在命令行上手動指定它們,每運行一次你就可以使用shell腳本/函數/ etc。它會爲你添加它們。

雖然最後一次快速測試似乎表明,儘管MAKEFLAGS的文件設置不起作用,但環境變量路徑仍然有效。因此,您可以在環境中設置MAKEFLAGS並使其正確使用。

+0

好吧,我會和MAKEFLAGS玩一下,看看我能否使用它。 vpath是用於包含頭文件的,不包括makefiles。謝謝 –

+0

'vpath'是針對「先決條件」的。自從嘗試構建makefile以來,認爲make可能會使用它是一個長遠的想法。您可能可以使用'%.mk:%.mk; cp $^$ @'也是在makefile中的規則,但我沒有嘗試。 –

+1

在makefile中設置'MAKEFLAGS'將不起作用,因爲只有在所有makefile被讀入之後纔會解析MAKEFLAGS的值更改,而不是每次設置MAKEFLAGS變量。當make解析了所有的makefile時,添加新的include目錄顯然沒有幫助。 – MadScientist