为便于描述,假设文件的目录结构如下:
+EntryLevel1
Kconfig
Makefile
+EntryLevel2
Kconfig
Makefile
+EntryLevel3
Kconfig.aaa
Makefile
1.首先在第一层EntryLevel1的Kconfig中增加如下内容
1.1在顶层的配置文件中,增加配置项
CONFIG_SUB_MODULE_AE=y
1.2在EntryLevel1的Kconfig中增加如下内容
mainmenu "Total SDK Configuration"
comment "Modules Configuration"
source EntryLevel2/Kconfig
2.在第一层EntryLevel1的Makefile中增加如下内容
ifeq ($(CONFIG_SUB_MODULE_AE),y)
AE_FLAGS := -DENABLE_OWNER_AE #这个宏是在.c,.h文件中使用的
else
AE_FLAGS :=
endif
KBUILD_CFLAGS += $(AE_FLAGS)
3.在第二层EntryLevel2的Kconfig中增加如下内容
menu "*** MW"
menuconfig BUILD_AAA_MODULE
bool "build aaa module"
default y
if BUILD_AAA_MODULE
source EntryLevel2/EntryLevel3/Kconfig.aaa
endif
endmenu
4.在第二层EntryLevel2的Makefile中增加如下内容
ifeq ($(CONFIG_BUILD_AAA_MODULE),y)
ccflags-y += -I$(srctree)/EntryLevel2/EntryLevel3/inc
endif
ifeq ($(CONFIG_BUILD_AAA_MODULE),y)
include $(srctree)/EntryLevel2/EntryLevel3/Makefile
endif
5.在第三层EntryLevel3的Kconfig.aaa中增加如下内容menu "AAA MODULE CONFIG"
config SUB_MODULE_AE
bool "enable ae sub module"
default n
endmenu
6.在第三层EntryLevel3的Makefile中增加如下内容
ccflags-y += -I$(src)/EntryLevel3/inc
ifeq ($(CONFIG_SUB_MODULE_AE),y)
lib_app_objs += EntryLevel3/FileOne.o \
EntryLevel3/FileTwo.o
endif
二、调试
1.通过在编译服务器上 make menuconfig可以查看到Kconfig里面增加的配置项
配置完成后的结果在rtos/output_part64/.config中
2.通过make -n 可以查看Makefile的最终结果
3.在Makefile或Kconfig中增加如下内容,可以中断make,并查看对应变量的值
$(error hello:$(variable))