重載其他makefile文件

有時一個makefile檔和另一個makefile檔相近也是很有用的。您可以使用‘include’指令 把更多的makefile檔包含進來,如此可加入更多的目標和定義的變數。然而如果兩個makefile 檔對相同的目標給出了不同的命令,make就會產生錯誤。

在主makefile檔(要包含其他makefile檔的那個)中,您可以使用通配符格式規則說明 只有在依靠當前makefile檔中的資訊不能重新創建目標時,make才搜尋其他的makefile檔, 詳細內容參見定義與重新定義格式規則。

例如:如果您有一個說明怎樣創建目標‘foo’(和其他目標)的makefile檔稱為‘Makefile’, 您可以編寫另外一個稱為‘GNUmakefile’的makefile檔包含以下語句:

foo:
frobnicate > foo
%: force
@$(MAKE) -f Makefile $@
force: ;

如果鍵入‘make foo’,make就會找到‘GNUmakefile’,讀入,然後運行‘frobnicate > foo’。 如果鍵入‘make bar’,make 發現無法根據‘GNUmakefile’創建‘bar’,它將使用格式規則提供 的命令:‘make –f Makefile bar’。如果在‘Makefile’中提供了‘bar’更新的規則,make就會使用 該規則。對其他‘GNUmakefile’不提供怎樣更新的目標make也會同樣處理。這種工作的方式 是使用了格式規則中的格式匹配符‘%’,它可以和任何目標匹配。該規則指定了一個依賴 ‘force’,用來保證命令一定要執行,無論目標檔是否存在。我們給出的目標‘force’時使用了 空命令,這樣可防止make 按照隱含規則搜尋和創建它,否則,make 將把同樣的匹配規則 應用到目標‘force’本身,從而陷入創建依賴的迴圈中。

results matching ""

    No results matching ""