网站建设公司推荐金石下拉网络,做小程序的公司有哪些比较好,浦口国家建设部网站,手机网站设计机构提笔简要记录方法
快速回忆要点
2个变量#xff1a;makefile变量#xff08;命令行和文件中#xff09;与C宏定义变量 3个空间#xff1a;命令行空间、Makefile文件中、C文件中 2种if#xff1a;ifeq、if defined
命令行
make CONFIG_FEATURE_An
Makefile中
CONFIG_…提笔简要记录方法
快速回忆要点
2个变量makefile变量命令行和文件中与C宏定义变量 3个空间命令行空间、Makefile文件中、C文件中 2种ififeq、if defined
命令行
make CONFIG_FEATURE_An
Makefile中
CONFIG_FEATURE_A ? yifeq ($(CONFIG_FEATURE_A), y)CFLAGS -D123 -DMACRO_CONFIG_FEATURE_A
C 语言中
#if defined(MACRO_CONFIG_FEATURE_A)
要点
Makefile通过CONFIG变量或者命令行参数进行配置是否编译某些代码或者编译参数同步传递给C语言的GCC宏定义
模板
Makefile中
## 配置定义区 start ?表示如果命令行或者其他地方定义了可以直接使用配置的
CONFIG_FEATURE_A ? y
CONFIG_FEATURE_UNIT_TEST ? y# 注意这里如果有注释y和#之间不能有空格
## 配置定义区 end# 显示配置信息
$(info CONFIG_FEATURE_A$(CONFIG_FEATURE_A))# 使用配置信息
ifeq ($(CONFIG_FEATURE_A), y)
srcs 1.c \feature_a.c
else
srcs 1.c \feature_a.c
endif# 根据配置信息传递给C的宏定义ifeq ($(CONFIG_FEATURE_A), y)
CFLAGS -D123 -DMACRO_CONFIG_FEATURE_A
else
CFLAGS -D123
endifC语言中
#if defined(MACRO_CONFIG_FEATURE_A)
printf(MACRO_CONFIG_FEATURE_A on\n);
#else
printf(MACRO_CONFIG_FEATURE_A off\n);
#endifC语言中还可以更加灵活的增加变量的方式 #if defined(CFG_XXX_TYPE) (CFG_XXX_TYPE 1)
工程方法
默认情况可以通过config区进行y n的配置如果与默认配置不一样希望其他编译方式可以直接使用make命令行指定变量后覆盖内部的? 比如
make CONFIG_FEATURE_An #不打开
make CONFIG_FEATURE_Ay #打开结论
灵活运用Makefile变量以及Makefile变量的2种输入方式。灵活配合C的宏定义变量可以组合出很多工程实践的结论任何一种语言条件分支都必不可少Makefile的事ifeqC语言的编译系统是 #if defined #ifdef 等灵活掌握语言的设计底层逻辑更加通透的理解本质