Makefile之创建简单的Makefile(二)

一、makefile自动化变量

  • $@ 规则中目标文件的集合。
  • < 依 赖 目 标 中 的 第 一 个 目 标 名 字 。 如 果 依 赖 目 标 是 以 模 式 ( 即 " < 依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么" <"<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。
  • $^ 所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。

示例:

 test1.o test2.o test3.o:test1.c test2.c test3.c 
    gcc -o $@ $^
$@=test1.o test2.o test3.o
$^=test1.c test2.c test3.c

二、Makefile中的运算符

  • = 最基本的赋值
  • := 覆盖之前的值,该赋值不会被递归展开
  • ?= 如果没有被赋值过就赋予等号后面的值,如果之前赋值过则使用之前的值,本次赋值无效。
  • += 是添加等号后面的值

详细的说明可以参考https://www.cnblogs.com/wanghuaijun/p/8092747.html

三、makefile如何指定头文件路径

  • makefile通常用“-I” 指定头文件的路径。
    示例:
    INCLUDES = -I./inc
    $(CC) -c $(INCLUDES) $(SRC)

INCLUDES也可以用其它变量代替。
通常头文件路径只需要在编译过程中使用。

四、伪目标 .PHONY

所谓伪目标就是这样一个目标,它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们将一个伪目标成为标签。

基本格式:

.PHONY:clean
clean: 
    rm *.o *.s

伪目标的作用

  • 【1】 解决相同目录下存在同名文件产生冲突的问题。

如果我们在一个Makefile中定义了一个名为clean伪目标,假设当前目录下存在一个同名的文件clean,那么在执行make clean的时候就会产生冲突。

  • 【2】伪目标的另一种使用场合时在make的并行和递归执行过程中。这条在实际使用中还没遇到过,这里不多做解释,有兴趣的可以百度一下。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值