- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
跟我一起写makefile(十)
跟我一起写makefile(十)
make?的运行 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当
前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编
译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的
时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。
一、make的退出码 make命令执行后有三个退出码: ????0?——?表示成功执行。 ????1?——?如果make运行时出现任何错误,其返回1。 ????2?——?如果你使用了make的“-q”选项,并且make使得一些目标不需要更
新,那么返回2。 Make的相关参数我们会在后续章节中讲述。
二、指定Makefile 前面我们说过,GNU?make找寻默认的Makefile的规则是在当前目录下依次
找三个文件——“GNUmakefile”、“makefile”和“Makefile”。其按顺序找这三个文
件,一旦找到,就开始读取这个文件并执行。 当前,我们也可以给make命令指定一个特殊名字的Makefile。要达到这个
功能,我们要使用make的“-f”或是“--file”参数(“--makefile”参数也行)。例如,
我们有个makefile的名字是“hchen.mk”,那么,我们可以这样来让make来执行
这个文件: ????make?–f?hchen.mk 如果在make的命令行是,你不只一次地使用了“-f”参数,那么,所有指定
的makefile将会被连在一起传递给make执行。
三、指定目标 一般来说,make的最终目标是makefile中的第一个目标,而其它目标一般
是由这个目标连带出来的。这是make的默认行为。当然,一般来说,你的makefile
中的第一个目标是由许多个目标组成,你可以指示make,让其完成你所指定的
目标。要达到这一目的很简单,需在make命令后直接跟目标的名字就可以完成
(如前面提到的“make?clean”形式) 任何在makefile中的目标都可以被指定成终极目标,但是除了以“-”打头,
或是包含了“=”的目标,因为有这些字符的目标,会被解析成命令行参数或是变
量。甚至没有被我们明确写出来的目标也可以成为make的终极目标,也就是说,
只要make可以找到其隐含规则推导规则,那么这个隐含目标同样可以被指定成
终极目标。 有一个make的环境变量叫“MAKECMDGOALS”,这个变量中会存放你所
指定的终极目标的列表,如果在命令行上,你没有指定目标,那么,这个变量是
空值。这个变量可以让你使用在一些比较特殊的情形下。比如下面的例子: ????sources?=?foo.c?bar.c ????ifneq?(?$(MAKECMDGOALS),clean) ????include?$(sources:.c=.d) ????endif 基于上面的这个例子,只要我们输入的命令不是“make?clean”,那么makefile
会自动包含“foo.d”和“bar.d”这两个makefile。 使用指定终极目标的方法可以很方便地让我们编译我们的程序,例如下面这
个例子: ????.PHONY:?all ????all:?prog1?prog2?prog3?prog4 从这个例子中,我们可以看到,这个makefile中有四个需要编译的程序
——“prog1”,?“prog2”,?“prog3”和?“prog4”,我们可以使用“make?all”命令来编译
所有的目标(如果把all置成第一个目标,那么只需执行“make”),我们也可以使
用“make?prog2”来单独编译目标“prog2”。 即然make可以指定所有makefile中的目标,那么也包括“伪目标”,于是我
们可以根据这种性质来让我们的makefile根据指定的不同的目标来完成不同的
事。在Unix世界中,软件发布时,特别是GNU这种开源软件的发布时,其makefile
都包含了编译、安装、打包等功能。我们可以参照这种规则来书写我们的makefile中的目标。 ?????“all” ????????这个伪目标是所有目标的目标,其功能一般是编译所有的目标。?????“clean” ????????这个伪目标功能是删除所有被make创建的文件。 ?????“install” ????????这个伪目标功能是安装已编译好的程序,其实就是把目标执行文件拷贝到指定的目标中去。 ?????“print” ????????这个伪目标的功能是例出改变过的源文件。 ?????“tar” ????????这个伪目标功能是把源程
您可能关注的文档
最近下载
- (高清版)DB33∕T 2540-2022 生物安全实验室管理评价规范.pdf VIP
- GB-T19360-2003工业用金属穿孔板技术要求和检验方法.pdf
- 2019集中式逆变器故障及日常运维.pptx VIP
- 彩妆基础化妆知识培训班课件.pptx VIP
- 2025秋湘科版科学二年级上册教学计划、教学设计(附目录).docx
- 2024届新高考语文冲刺精准复习:多元关系思辩类材料作文审题立意.pptx VIP
- 执业药师继续教育《零售药店质量体系的建立--质量活动》习题答案.docx VIP
- 集中式逆变器安备件培训.pptx VIP
- 现代企业质量成本管理方案分析样本.doc VIP
- 工程测量课件:精密控制网复测.pptx
文档评论(0)