本文继续上一篇关于 Makefile 文件内容的介绍。上一篇文章如下:
Linux下 Makefile 基本语法_凌雪舞的博客-CSDN博客
一. Makefile
上一篇文章介绍了 Makefile基本语法中的变量,模式规则,自动化变量。这里继续介绍 Makefile 的另外一些语法。包括 Makefile 的伪目标,条件判断,函数调用。
1. Makefile 伪目标
Makefile 有一种特殊的目标——伪目标。不像真正的目标那样会生成一个目标文件。
典型的伪目标是 Makefile 中用来清理编译过程中中间文件的 clean 伪目标。
一般格式如下:
.PHONY: clean <-- 这句没有也行, 但是最好加上
clean:
-rm -f *.o
执行伪目标的效果等于执行了某一个动作, 并不产生目标文件。
2. Makefile 条件判断
其中ifeq 与 ifneq 成对,ifdef 与 ifndef 成对使用。前者判断是否相等,后者判断变量是否否定义。
ifeq 条件语句
条件成立时要做的事情
else
条件不成立时要做的事情
endif
ifdef 语法格式如下:(ifndef 与 ifdef 用法相似,只是意思相反。)
ifdef <变量名>
3. Makefile 函数的使用
$(<function> <arguments>)
或是
${<function> <arguments>}
几种常用的函数如下:
(1) 函数 subst : 用来完成字符串替换
调用形式如下:
$(subst <from>,<to>,<text>) //此函数的功能是将字符串<text>中的<from>内容替换为<to>
(2) 函数 patsubst: 用来完成模式字符串替换
使用方法如下:
$(patsubst <pattern>,<replacement>,<text>)
(3) 函数 dir: 用来获取目录.
使用方法如下: (//从文件名序列<names>中提取出目录部分,返回值是文件名序 <names>的目录部分)
$(dir <names…>)
(4) 函数 notdir : 去除文件中的目录部分,也就是提取文件名,用法如下:
$(notdir <names…>)
(5) 函数 foreach :用来完成循环,用法如下:
$(foreach <var>, <list>,<text>)
(6) 函数 wildcard: 通配符“%”只能用在规则中,只有在规则中它才会展开,如果在变量定义和函数使用时, 通配符不会自动展开,这个时候就要用到函数 wildcard,使用方法如下:
$(wildcard PATTERN…)
例如如下:
$(wildcard *.c) //用来获取当前目录下所有的.c 文件,类似“%”。
关于 Makefile 中的内容,以后有机会再在文章中补充。