2011-04-26 63 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