- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ck文档 makefile写法整理
makefile写法整理
1 Makefile基本语法
Makefile:程序模块的内部关系决定了源程序编译和链接的顺序,通过建立makefile可以描述模块间的相互依赖关系。Make命令从中读取这些信息,然后根据这些信息对程序进行管理和维护。在makefile里主要提供的是有关目标文件(即target)与依靠文件(即dependencyies)之间的关系,还指明了用什么命令生成和更新目标文件。有了这些信息,make会处理磁盘上的文件,如果目的文件的时间标志(该文件生成或被改动进的时间)比任意一个依靠文件旧,make就执行相应的命令,以便更新目的文件(目的文件不一定是最后的可执行文件,它可以是任何一个文件)。
1)makefile的基本单位是“规则”,即描述一个目标所依赖的文件或模块,并给出其生成和算法语言需要用到的命令。规则的格式如下:
目标[属性]
分隔符号 [依赖文件][命令列]
{tab命令列}
与Linux下面的命令格式相同,[]中的内容表示为可选择项,{}中的内容表示可出现多次。
A. 目标:目标文件列表,即要维护的文件列表。
B. 属性:表示该文件的属性。
C. 分隔符:用来分割目标文件和依赖文件的符号,如冒号“:”等。
D. 依赖文件:目标文件所依赖的文件的列表。
E. 命令列:重新生成目标文件的命令,可以有多条命令。
注意:在makefile中,除了第一条命令,每一个命令行的开头必须是一个tab符号,也就是制表符,而不能因为制表符相当于4个空格而不去键入tab符号。因为make命令是通过每一行的tab符号来识别命令行的。另外,对于第一条命令而言,不必用tab键,就可以直接跟在依赖文件的列表后面。对于注释的了,起头应该用#符号,并用换行符号结束。如果要引用#符号,要用到“”。
2) make命令的使用格式为:
make [选项][宏定义][目标文件]
make命令有多个选项参数,列举参数含义如下:
A. -f:指定需要维护的目标。
B. -i:忽略运行makefile中命令产生的错误,不退出make.
C. -r:忽略内部规则。
D. -s:执行但是不显示所执行的命令。
E. -x:将所有的宏定义都输出到shell环境。
F. -V:列出make的版本号。
选项给出了make命令工作的方式方法,宏定义给出了makefile时所用的宏值,目标文件就是需要更新的文件列表。
3)使用伪目标:make命令的目标可分为实目标和伪目标两种。而有时需要用make命令来做些辅助性的工作,或者对多个文件进行维护。可以通过设置伪目标来实现。
4)指定需要维护的目标:一般make维护的是makefile中的第一个目标文件。但有时用户并不关心最终的目标文件如何。反而关心中间的目标文件。使用目标参数make的执行。
5)makefile变量:makefile里主要包含了一些规则,除此之外就是变量定义,被称为宏定义。Makefile里的变量就像一个环境变量。事实上,环境变量在make过程中可以看成make的变量。这些宏定义是大小写敏感的,一般使用大写字母。它们几乎可以从任何地方被引用,也可以被用来做很多事情,比如:
A.储存一个文件名列表:生成可执行文件的规则包含一些目标文件名作为依赖文件。在这个规则的命令行里,同样的那些文件被输送给gcc做为命令参数。如果在这里使用一个宏来储存所有目标文件名,那么就会很容易加入新的目标文件,而且不易出错。
B.储存可执行文件名:如果程序被用在一个非GCC的系统里,或者想使用一个不同的编译器,就必须将所有使用编译器的地方改成新的编译器名。但是如果使用一个宏来代替编译器名,那么只需要改变一个地方,其他所有地方的命令名就都改变了。
C.储存编译器命令选项:假设想给所有的编译命令传递一组相同的选项(例如-Wall -O -g),如果把这组选项存入一个宏,那么可以把这个宏放在所有调用编译器的地方。而当要改变选项的时候,只需在宏定义的地方改变这个变量的内容。要定义一个宏,只要在一行的开始写下这个宏的名字,后面跟一个“=“和要设定这个变量的值。以后引用这个变量时,写一个$符,后面是括号里的变量名。格式如下:
$(宏名) 或${宏名}
make将$符号作为引用的开始。如果要表示$符号,那么应用$$即可。宏引用还支持多层引用,在处理时按照顺序依次展开。当宏名是单个字符时,可以省略括号,宏定义可以在makefile文件中。
$@:扩展成当前规则的目标文件名
$:扩展成依赖列表中的第一个依赖文件
$^:扩展成整个依赖的文件列表(除掉了里面所有重复的文件名)
$?:表示目标文件中新的依赖文件的列表
$*:是表示依赖文件的文件名,不含扩展名
6)在makef
您可能关注的文档
- A股唯一具磷酸铁锂电池生产能力的上市公司能源科技.doc
- A股变盘在,四大行业携70亿元领衔冲击2700点.doc
- A股并购调:上市公司变PE 收购背后藏猫腻.doc
- AirNe系统操作手册-第一卷-SDD.doc
- Autocd2011【cad2011】破解版(32位)简体中文版安装图文教程.doc
- A节能灯具欧盟电子电气产品环保指令WEEE和ROHS介绍.doc
- A股首次发上市律师实务.doc
- B-1~B3标准、专业书籍.doc
- B10见证样表1.doc
- b 工业污源产排污系数手册 4411火力发电行业.doc
- 八年级上册第三单元检测试卷.doc
- 八年级上学期第二次月考地理试题2.docx
- 八年级下册必读名著《钢铁是怎样炼成的》要点梳理与练习.docx
- 八年级下册必读名著《钢铁是怎样炼成的》知识梳理与练习.docx
- 八年级上学期第一次月考地理试题.doc
- 八年级下册04 古诗文默写强化训练.docx
- 广东省广州市2024-2025学年高一上学期11月期中生物试题(无答案).pdf
- 2025届浙江省宁波市高三上学期高考与选考模拟考试历史试卷(含答案).pdf
- 广东省顺德区普通高中2024-2025学年高三上学期11月教学质量检测生物试题(无答案).pdf
- 2024-2025学年四川省成都外国语学校高三(上)月考物理试卷(10月份)(含答案).pdf
最近下载
- 肾盂旁囊肿的研究的现状及进展.doc VIP
- 3.1《中国科学技术史序言(节选)》课件-中职高二语文(高教版2024拓展模块上册).pptx
- PCB多层压合工艺PPT课件.ppt
- 第一单元第二节+体验“云上生活”++课件 2024—2025学年川教版(2024)信息科技+七年级上册.pptx VIP
- Garmin佳明Forerunner 165 智能GPS跑步腕表说明书用户手册.pdf
- 工程项目工期关键节点和线路保证措施(模板)18.docx VIP
- 泰康入职测评考试题库答案.pdf
- Ai围棋定式大全(重排彩图).pdf
- 汽车钣喷系列教学课件--钣金件焊接工艺.ppt
- 人力资源有限公司管理制度.docx VIP
文档评论(0)