条件编译--从menuconfig编译选项到源文件

2 篇文章 0 订阅

这里所描述的条件编译是这样一种需求: 在make menuconfig里选择编译条件项, 编译的时候根据配置结果,选择不同的编译方法, 最后代码执行的时候就会根据配置选项执行不同的动作.

例如,我想在make menuconfig配置菜单栏中增加一个配置选项,用于指示是否使用"疯狂模式".如果是,就天马行空, 如果不是,就一本正经. 下面就按照上述顺序介绍实现过程.

1. 修改Kconfig, 增加配置选项.

config CRAZY_MODE
	bool "crazy mode for brave people"
	default y
	help
	  mode: crazy

2. 修改Makefile, 使用配置结果

配置结果保存在.config文件中,需要将其include到对应的Makefile1文件中.

这里配合CMake来编译.其中Makefile1要调用CMake生成的Makefile.

假设Makefile1, CMakeLists.txt, 源文件都在同一目录下.

2.1 Makefile1

include .config

ifeq ($(CONFIG_CRAZY_MODE), y)
	CRAZY_ENABLE ?= yes
else
	CRAZY_ENABLE ?= no
endif

all:
	cmake ./ -DCONFIG_FEATURE_CRAZY=$(CRAZY_ENABLE)
	make

2.2 CMakeLists.txt 根据CONFIG_FEATURE_CRAZY配置结果编译不同的文件.

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
project(selectmode)

include_directories(include)  #头文件放置位

if(CONFIG_FEATURE_CRAZY MATCHES "yes")
	add_definitions(-DCONFIG_FEATURE_CRAZY)
endif()

add_executable(mode mode.c)
target_link_libraries(mode xx)

3. 修改源文件mode.c

#include <stdio.h>


int main()
{
#ifdef CONFIG_FEATURE_CRAZY
	printf("How crazy you are!\n");
#endif
	return 0;
}

4. 配置并编译

make menuconfig

make -f Makefile1

5. 运行

./mode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值