ck文档 makefile写法整理.doc

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

1444168621 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档