当前位置:
首页 >
Makefile常见符号意思
发布时间:2023/11/30
63
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Makefile常见符号意思
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
Makefile里有许许多多的符号,对于新手而言如果没有经常使用,就很容易忘记,所以我把常见符号的意义写下,方便日后忘记查询。本文章会持续更新...
1.$@:代表目标;$^代表所有依赖,$^代表第一个依赖。
eg:下图的$@代表目标名test,$^代表所有依赖,即test.c和seqlist.c,所以相当于gcc -O0 -g -Wall -o test test.c seqlist.c。
CC = gcc #使用gcc编译器 CFLAGS =-O0 -g -Wall #-O0代表编译的时候不进行相应的优化;#-g代表可以使用gdb进行相应的调试,编译的时候会添加一些调试信息#-Wall把警告信息全都打印出来 test:test.c seqlist.c$(CC) $(CFLAGS) -o $@ $^2..PHONY:假设我们的makefile所在目录下,刚好有名为clean的文件,那么我们执行make clean这条规则时并不能执行rm *.o test,如果加上.PHONY:,则可以成功执行rm *.o test.(因为每条规则下的命令被执行必需满足以下情况之一:1.目标在当前路径不存在;2.某个依赖比目标“新”,假如我们当前路径有clean文件,而Makefile里面的clean又没有依赖文件,所以就会发生错误啦!)
test: a.o b.o c.ogcc -o test $^%.o : %.cgcc -c -o $@ $<clean:rm *.o test.PHONY: clean3.
:= # 即时变量,A := xxx # A的值即刻确定,在定义时即确定
= # 延时变量,B = xxx # B的值使用到时才确定
?= # 延时变量, 如果是第1次定义才起效, 如果在前面该变量已定义则忽略这句
+= # 附加, 它是即时变量还是延时变量取决于前面的定义
总结
以上是生活随笔为你收集整理的Makefile常见符号意思的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 在linux下利用ls命令进行模糊查找
- 下一篇: fstat、stat和lstat 区别