在看Makefile文件时,有很多符号不懂什么意思。网上有很多教材,我相信看完教材之后肯定啥都懂了,但需要花费大量时间。对于新手或者只想查找某几个符号具体含义,就不是特别友好。
基于此原因,本作者归纳总结了Makefile中常见的一些符号的具体含义,基本囊括了Makefile文件中所有符号。总结汇总成表格如下:
Makefile 命令格式如下
#Makefile中注释符号
#目标文件:依赖文件
#第二行必须加TAB键,在跟command
符号 | 含义 & 作用 |
---|---|
* | 通配符,集合所有相同后缀文件 |
% | 通配符,集合所有相同后缀文件,多用于Makefile |
# | 在 Makefile 中表示单行注释,类似于 C 语言的//注释。 |
$(变量名) | 表示将变量进行展开 |
$^ | 代表依赖文件 |
$< | 第一个依赖文件 |
$@ | 代表目标文件 |
- | 如果文件不存在,make不会报错 |
> | :表示将>前面的依赖关系写到后面文件中 |
-I (后面跟目录) | 表示该目录作为 寻找头文件的目录; |
-L | 库文件目录 |
\ | 续行符 |
/ | 根目录 |
./ | 目前所在的目录 |
../ | 上一层目录 |
-Wl | 这个是gcc的参数,表示编译器将后面的参数传递给链接器ld |
echo | 命令的用处是将字符串打印到终端上 |
@echo | 当前这句log不会被打印到终端上 |
-g | debug |
-Wall | 最高级报警报 |
wildcard | 扩展通配符 |
patsubst | 替换通配符(后缀的替换) |
notdir | 去除路径 |
wildcard | 得到指定文件夹下全部的C语言源程序文件名称的方法 |
.o=.d | .o文件替换成.d文件 |
touch file | 创建一个名为“file”的新的空白文件 |
make | 命在当前文件夹内找到Makefile的文件,按照其中的内容进行项目编译 |
clean | 清除上一次编译带来的结果 |
链接 | hello:hello.o gcc -o hello hello.o |
编译 | hello.o:hello.S gcc -S hello.o -o hello.S |
汇编 | hello.S:hello.i gcc -S hello.S -o hello.i |
预编译 | hello.i:hello.c gcc -E hello.c -o hello.i |