Makefile

--------参考朱友鹏LINUX嵌入式---------
--------个人纪录所用–个人理解--------
makefile用来进行项目管理:如uboot,linux内核。
目标,依赖,命令
(1)makexxx xxx就是目标
(2)依赖是用来生成目标的原材料
(3)加工目标的方式

1:%.O:%是通配符代表所有.o结尾的文件。
2:makefile中定义和使用变量,和shell脚本中相似。
3:伪目标:这个目标本身不代表一个文件,执行这个文件不是为了得到某个文件,
单纯的为了执行下面的动作,比如:clean。用.PHONY来声明。如:
.PHONY clean
clean:
4:makefile的文件名合法的一般有两个:Makefile ,makefile
5:makefile中引用其他makefile(include指令)
有时候makefile总体比较复杂,因此分成好几个makefile来写。
如:include /…/xxx.mk
6:makefile注释使用#
7:makefile的命令行前面的@表示静默执行。
makefile默认执行情况下执行一行命令前,会先把这行命令打印出来,再执行命令。
不想看到命令本身,就用静默执行即可。
8:makefile中几种变量赋值运算符
(1) = 最简单的赋值
(2):= 也是赋值,和=大部分情况一样,
但= A=ABC B=$(A)DEF A=GH echo $B 问B是多少?
B=GHDEF 解析的时候是按照最后一次赋值来算的。
而:=则不是,解析之前的不看后面的。就地直接解析。
(3)?= 如果变量前面没有定义过(空值也算赋值)则执行这条赋值,否则忽略。
(4)+= 用来给一个已经赋值的运算符接续赋值,类似strcat。
9: makefile环境变量
(1):用export导出的就是环境变量,一般情况要求环境变量大写,普通变量小写。
(2):环境变量类似于所有的makefile可以共享的全局变量。
(3):makefile中有一些环境变量是内部自己定义的。内部环境变量。
10:makefile通配符
(1)*: echo *.c 所有的c文件打印出来
(2)?: echo ?.c 打印只有一个字符的c文件 1.c,2.c
(3)[]:echo [12].c 括号里挨个匹配
(4)%,也是通配符表示容易多个字符 ,%一般只用于规则描述中,所以叫规则通配符。
(5)wildcard 具体参考《跟我一起去学MakeFile》
11:makefile的自动变量–方便省字。
(1):类似与C语言编译器内置的宏_FILE_一样
$@ 规则的目标文件名
$< 规则的依赖文件名 ,目标默认第一个。但如果是% 则一个一个全部取出来。
$^ 依赖的文件集合

发布了1 篇原创文章 · 获赞 0 · 访问量 13
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览