Makefile“重读”问题

发布于 2024-11-03 18:29:55 字数 717 浏览 0 评论 0原文

所以我正在构建一个与linux内核Kconfig工作非常相似的makefile系统。

也就是说,用户输入“make menuconfig”,它会创建一个菜单驱动机制来打开/关闭构建模块。很简单,我从 Linux 和开源中窃取了大部分内容。

我遇到的唯一问题是重新读取新创建的 .config 文件。

那么“make menuconfig”会执行以下操作:

.PHONY:菜单配置
菜单配置:${SCRIPTS_DIR}/config/mconf check_config ${TOP}/gnet.kconfig
@${SCRIPTS_DIR}/config/mconf gnet.kconfig

${SCRIPTS_DIR}/config/mconf 使用 gnet.kconfig 作为起始配置,然后在 ${TOP} 目录中创建一个 .config 文件。

我想要做的是重新评估 .config,这样我就可以从中获取一些参数并知道用户是否更改了任何重要内容。

我尝试过以下方法,但运气不佳。

.config:菜单配置
cp .config 默认配置/arm-config

类似的东西..但是.config是旧的,而不是新的。

我希望我对此解释得足够好。

谢谢。 -卫星电视

So I am building a makefile system very similar to the linux kernel Kconfig work.

That is the user would type "make menuconfig" and it creates a menu driven mechanism for turning build modules on/off. Pretty easy being that I stole most of it from Linux and open source.

The only problem I have is re-reading the newly created .config file.

So what happens is that "make menuconfig" does the following:

.PHONY: menuconfig
menuconfig: ${SCRIPTS_DIR}/config/mconf check_config ${TOP}/gnet.kconfig
@${SCRIPTS_DIR}/config/mconf gnet.kconfig

The ${SCRIPTS_DIR}/config/mconf uses the gnet.kconfig as a starter config and then creates a .config file in the ${TOP} directory.

What I want to do is have the .config re-evaluated so I can get some parameters out of it and know if the user changed anything significant.

I've tried the following without much luck.

.config: menuconfig
cp .config default-config/arm-config

Something like that.. but the .config is the old one, not the new one.

I hope I explained this well enough.

Thanks.
-stv

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

海未深 2024-11-10 18:29:55

正如 Beta 指出的,您遗漏了一些相关的内容。目标 .configmenuconfig 有何关系?这两者有关联吗?你确定第二个菜谱被执行了吗?
当您运行 make menuconfig 时,目标 menuconfig 将成为 make 将尝试更新的最终目标。由于它是一个 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

As Beta noted, you've left out some relevant things. How is the target .config related to menuconfig? Are the two even related at all? Are you sure the second recipe gets executed?
When you run make menuconfig, the target menuconfig becomes the ultimate goal that make will try to update. Since it is a PHONY target, its recipe will always be executed. Before it does that, make checks if its dependencies exist and are up to date. As I said, you don't show a link between the targets menuconfig and .config, so what would cause the recipe for .config to be executed?

On a related issue, your rules are not telling the truth to make. Your first rule shown creates the file .config, so that should be in the list of targets for that rule. Your second rule depends on the existence of that file, so it should be among the dependencies here, and then creates a file default-config/arm-config, which should thus be the target of this rule.

.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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文