Makefile快速查阅

target ... : prerequisites ...
command
    target         //目标文件,O文件 或者是可执行文件
    prerequisites  //生成target所需要的文件或者目标
    command           //make需要执行的命令(任意shell命令),makefile中的命令必须以[tab]开头
    
#符号:用于注释,如果要显示符号本身,需要进行转义,#    

@符号
    通常makefile会将其执行的命令行执行前输出到屏幕上。
    如果@加到命令行前,这个命令将不被make回显出来。
    
-符号
    通常删除或创建文件如果碰到文件不存在或者已经创建了,那么希望忽略掉这个错误,继续执行。
    -rm dir;
    -mkdir aaadir;

+符号
    它的意思和 '-' 相反,表示不忽略
    
$符号
    主要是扩展打开makefile中定义的变量

符号:换行符,方便显示。将太长的一行分割成多行方便显示,逻辑上还是一行;    

 $@  //目标文件,
 $^  //所有的依赖文件
 $<  //第一个依赖文件
 $?

 
“=”说明
VIR_A = A
VIR_B = $(VIR_A) B
VIR_A = AA
经过上面的赋值后,最后VIR_B的值是AA B,而不是A B。在make时,会把整个makefile展开,拉通决定变量的值

 
“:=”说明
VIR_A := A
VIR_B := $(VIR_A) B
VIR_A := AA
”:=”就表示直接赋值,赋予当前位置的值

 
“?=”说明
“?=”表示如果该变量没有被赋值,则赋予等号后的值。
VIR := old_value
VIR ?= new_value
这种情况下,VIR的值就是old_value

 
+=说明
“+=”和平时写代码的理解是一样的,表示将等号后面的值添加到前面的变量上

$@表示生成目标
 
比如
boot.o : boot.c
     gcc -o $@ -c $<
     
其中 $@表示生成的目标 boot.o
  $< 表示生成的依赖文件 boot.c

===================================================

https://blog.csdn.net/weixin_38391755/article/details/80380786
https://www.cnblogs.com/wang_yb/p/3990952.html
https://blog.csdn.net/u012989012/article/details/80572043
https://blog.csdn.net/weixin_38391755/article/details/80380786
https://www.cnblogs.com/wang_yb/p/3990952.html

 

知行合一
原文地址:https://www.cnblogs.com/grooovvve/p/14453458.html