要点:
- make 命令行使用 xxx=abc传递,本质是在makefile中定义了makefile的变量。使用的判断关键字是 ifeq 以及 else ifeq和else
- make 传递给C语言的配置本质是宏定义,使用的判断关键字是 if defined或者 ifdef ,elif definded
核心:
make ifeq 与 else ifeq
c ifdef 与 else ifdef。并且ifdef = if defined
Step1: 命令行定义
make CFG_TEST_VAR=linux
Step2: Makefile中使用
makefile中可以根据配置进行条件判断,条件判断中可以根据条件配置C语言的cflags传递给C文件,但是Makefile的变量不能直接传递
# 如果DEBUG参数被传递,则打印一条消息
ifeq ($(CFG_TEST_VAR),linux)
$(info "Debug mode is enabled.")
DEBUG_FLAG = -g
endif
# 其他规则和目标
mytarget:
gcc myprogram.c -o myprogram $(DEBUG_FLAG)
如果有多个分支:
# 如果DEBUG参数被传递,则打印一条消息
ifeq ($(CFG_TEST_VAR)