- 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(十一)收藏make 的运行
——————
一般来说,最简单的就是直接在命令行下输入make 命令,make 命令会找当前目录的 makefile 来执行,一切都是自动的。但也有时你也许只想让make 重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make 命令的。
一、make 的退出码
make 命令执行后有三个退出码: 0 —— 表示成功执行。
—— 如果 make 运行时出现任何错误,其返回 1。
—— 如果你使用了 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‖
这个伪目标功能是把源程序打包备份。也就是一个tar 文件。
dist‖
这个伪目标功能是创建一个压缩文件,一般是把tar 文件压成Z 文件。或是 gz 文件。
TAGS‖
这个伪目标功能是更新所有的目标,以备完整
您可能关注的文档
最近下载
- 专题22.7 二次函数图象与系数的关系选填压轴专项训练(30道)(解析版).pdf VIP
- 浙江省嘉兴市第一中学2024-2025学年高一上学期10月阶段性测试物理试卷(含答案).pdf VIP
- 1.新版历年全国高考英语高频词汇必备表汇总打印版.docx
- 矿山生态修复技术规范第3部分:金属矿山.pdf VIP
- 〖地 理〗世界的地形第一课时说课稿-2024-2025学年七年级地理上学期(湘教版2024).docx VIP
- 《物理学发展史》课件.ppt VIP
- 《物理学的发展史》课件.docx VIP
- 2026秋季中国电建集团北京勘测设计研究院有限公司校园招聘笔试参考题库附答案解析.docx VIP
- 浙江省嘉兴市2023-2024学年高一上学期10月月考物理含解析.pdf VIP
- 美国特色介绍.pptx VIP
文档评论(0)