Makefile if 函数

Makefile 中的 if 函数提供了在一个函数上下文中实现条件判断的功能,类似于ifeq关键字,if函数的使用格式如下:

$(if CONDITION,THEN-PART)
$(if CONDITION,THEN-PART[,ELSE-PART])

if 函数的第一个参数 CONDITION表示条件判断,展开后如果非空,则条件为真,执行 THEN-PART部分;否则,如果有ELSE-PART部分,则执行ELSE-PART部分。

if函数的返回值即执行分支(THEN-PART或ELSE-PART)的表达式值。如果没有ELSE-PART,则返回一个空字符串。

if 函数使用示例:

.PHONY: all

install_path = $(if $(install__path), $(install__path), /usr/local)

all:
    @echo "install_path = $(install_path)"

当我们使用make编译安装一个软件时,通常会指定一个安装路径,如果没有指定的话,则会默认安装在/usr/local目录下。在上面这个Makefile中,我们定义了一个install_path变量,通过if函数来判断这个变量是否为空,来决定最终的安装路径。执行make命令,可以看到运行结果如下:

# make
install_path =  /usr/local
# make install_path=/opt
install_path = /opt
《Makefile工程实践》视频教程,一线开发工程师独家录制,网上首家讲解Makefile的实战课程。从零开始,教你一步一步编写一个工程项目的Makefile,支持使用第三方静态库、动态库,支持指定模块或目录编译生成静态库、动态库,赠送企业级的Makefile模板,学完即可拿来使用,投入项目开发实战,具备独立开展项目开发和管理的能力。详情请点击淘宝链接:Linux三剑客