2011-04-26 64 views
1

因此,我正在構建一個非常類似於Linux內核Kconfig工作的makefile系統。Makefile「re-read」question

這就是用戶輸入「make menuconfig」,它創建一個菜單驅動的機制來打開/關閉構建模塊。很容易,我從Linux和開放源代碼中偷走了它的大部分。

我唯一的問題是重新讀取新創建的.config文件。

所以會發生什麼是 「make menuconfig進行」 執行以下操作:

.PHONY:menuconfig這
menuconfig的:$ {} SCRIPTS_DIR /配置/ mconf check_config $ {} TOP /gnet.kconfig
@ $ {} SCRIPTS_DIR /配置/ mconf gnet.kconfig

的$ {} SCRIPTS_DIR /配置/ mconf使用gnet.kconfig作爲首發的配置,然後在$創建一個config文件{} TOP目錄。

我想要做的是.config重新評估,所以我可以從中獲得一些參數,並知道用戶是否改變了任何重要的東西。

我試過以下沒有太多運氣。

的.config:menuconfig這
CP的.config默認配置/ ARM-配置

類似的東西..但的.config是舊的,而不是新的。

我希望我解釋得很好。

謝謝。 -stv

+0

這應該工作;我懷疑你會留下一些東西。你使用什麼版本的Make,它產生了什麼輸出? – Beta 2011-04-26 20:38:37

回答

1

正如測試版所指出的那樣,您遺漏了一些相關的東西。目標.configmenuconfig有關嗎?這兩者甚至有關係嗎?你確定第二個配方得到執行嗎?
當您運行make menuconfig時,目標menuconfig成爲嘗試更新的最終目標。由於它是PHONY的目標,其配方將始終執行。在這之前,檢查它的依賴關係是否存在並且是最新的。正如我所說的,您不會在目標menuconfig.config之間顯示鏈接,那麼會導致.config的配方被執行?

在一個相關的問題上,你的規則並沒有說出真相。顯示的第一條規則創建文件.config,因此應該在該規則的目標列表中。您的第二條規則取決於該文件的存在,因此它應該位於此處的依賴關係中,然後創建一個文件default-config/arm-config,這應該成爲此規則的目標。

 
.PHONY: menuconfig 
menuconfig .config: ${SCRIPTS_DIR}/config/mconf check_config ${TOP}/gnet.kconfig 
     @${SCRIPTS_DIR}/config/mconf gnet.kconfig 
 
default-config/arm-config: .config 
     cp .config default-config/arm-config 
+0

我認爲Steve正在運行'make .config'。 – Beta 2011-04-27 00:02:20

+0

可能。我的答案的第二部分在這種情況下仍然有效(當然,除非我誤解他在做什麼)。 – eriktous 2011-04-27 10:40:54

+0

嗨,大家..對不起,延遲..卡住了另一個問題.... – Steve 2011-04-29 21:30:52