欢迎来到天天文库
浏览记录
ID:34646451
大小:1.19 MB
页数:32页
时间:2019-03-08
《makefile的编程规范new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Makefile编写嵌入式助教苗沛2014.01.08Makefile是什么知识讲GNUmake是一个命令工具,是一个用来控制软件构建过程的解自动化管理工具。Make工具通过称为Makefile的文件来完成并自动维护编译工作,由RichardStallman与RolandMcGrath设计开发。Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中记录有文件的信息,在make时会决定在链接的时候需要重新编译哪些文件。make命令格式:make[-fMakefile
2、][option][target]#maketarget#make#makeclean(伪目标)知识讲解Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动的发现最终的生成文件已经过时,而重新编译相应的模块。Makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。Makefile的文件名知识默认的情况下,make命令会在当前目录下按顺序找寻文件名为讲解“GNUmakefile”、“makefile”、“Makefile”的文件
3、,找到了解释这个文件。在这三个文件名中,最好使用“Makefile”这个文件名,因为,这个文件名第一个字符为大写,这样有一种显目的感觉。最好不要用“GNUmakefile”,这个文件是GNU的make识别的。有另外一些make只对全小写的“makefile”文件名敏感,但是基本上来说,大多数的make都支持“makefile”和“Makefile”这两种默认文件名。当然,你可以使用别的文件名来书写Makefile,比如:“Make.Linux”,“Make.Solaris”,“Make.AIX”等,如果要指定特定的Makefile,你可以使用make的“-f”和“
4、--file”参数,如:make-fMake.Linux或make--fileMake.AIX。Makefile里有什么?知识Makefile里主要包含了五个东西:显式规则、隐含规则、变讲解量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多个目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐含规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,
5、这个有点像C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。知识讲4、文件指示。其包括了三个部分,一个是在一个解Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。5、注释。Makefile中只有行注释,和UNIX的Shell脚本一样,其注释是用“#”字符,这个就像C/C++,Java中的“//”一样。在Makefile中的命令,必须要以[Tab]键开始。知Makefile的规则识讲解让我们
6、先来粗略地看一看Makefile的规则。[3]target...:prerequisites...command......目标:依赖执行指令...target也就是一个目标文件,可以是ObjectFile,也可以是执行文件。还可以是一个标签(Label)。知①prerequisites就是,要生成那个target所需要的文识件或是目标。讲解②command也就是make需要执行的命令。(任意的Shell命令)这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说
7、白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行(command一定要以Tab键开始,否者编译器无法识别command),减少重复编译,提高了其软件工程管理效率。Makefile定义变量和引用变量知识讲解变量的定义和应用与Linux环境变量一样,变量名要大写,变量一旦定义后,就可以通过将变量名用圆括号括起来,并在前面加上“$”符号来进行引用。变量的主要作用:1、保存文件名列表2、保存可执行命令名,如编译器3、保存编译器的参数变量一般都在makefile的头部定义。按照惯例,所有的make
8、file变
此文档下载收益归作者所有