make menuconfig

本文不是分析Linux的make menuconfig,而是如何将Linux这套机制适配到自己的项目里。

Linux内核配置工具会使用到menuconfig。menuconfig会用到mconf、conf两个命令。这两个命令是编译内核自动生成的。网上有开源的实现,我们下载下来自己编译:

github链接:

menuconfig

下载后按照说明编译即可。

Kconfig

Kconfig文件定义了配置。

执行make menuconfig会根据具体的Kconfig加载界面。

先编写一个最简单的makefile,内如如下。

%config:
    mconf Kconfig

写一个简单的Kconfig。 

menu "toolchain"

choice
	prompt "chose tool chain"
	default gcc
config gcc
	bool "gcc"

config armcc
	bool "armcc"

config mingw
	bool "mingw"

endchoice

config ARGFLAGS
	string "argflags"
	depends on gcc
	default "-c -o -g -list"

config DEBUG
	bool "debug"
	default n

endmenu

menu "platform"

choice
	prompt "chose linux"
	default linux
config linux
	bool "linux"

config windows
	bool "windows"

config no_os
	bool "no_os"

endchoice

endmenu

具体的Kconfig语法可以参考别的资料,这里就不介绍了。

执行:

make menuconfig

就会显示配置界面 :

修改保存后,会生成.config配置文件。 

这样我们就完成了一个简单的menuconfig。

config.h

.config是给make编译使用的。如果代码里需要使用相应的配置,需要转换成头文件。

%config:
    mconf Kconfig
    conf Kconfig --silentoldconfig config.h

 配置完后会生成config.h,这样在代码里包含头文件即可。

#define CONFIG_windows 1
#define CONFIG_mingw 1

defconfig

有时不同的项目默认的配置文件可能不同,需要需要在某些配置基础上修改。

例如有xxx_defconfig。原因就是将xxx_defconfig拷贝到.config。这样执行make menuconfig的时候就会在此基础上配置了。

%config:
    conf --defconfig=demo_defconfig Kconfig
    mconf Kconfig
    conf Kconfig --silentoldconfig config.h

例如demo_defconfig作为默认的配置。

如果包含多个xxx_defconfig。随意需要增加多个%config匹配关系。

假设有xxx_defconfig、yyy_defconfig、zzz_defconfig。

.PHONY: xxx_defconfig yyy_defconfig zzz_deconfig

%config:
	@echo "select default config"
	@mconf Kconfig
	@conf Kconfig --silentoldconfig config.h
xxx_defconfig yyy_defconfig zzz_defconfig:
	@echo "select $@"
	@conf --defconfig=$@ Kconfig
	@mconf Kconfig
	@conf Kconfig --silentoldconfig config.h

正常是可以%_defconfig的。但是虽然.PHONY配置了,还是会提示is up to date.说明匹配关系没写对。这个后面再找下原因吧。

这样就完成了menuconfig的使用规则。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王涛的专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值