- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
make的简单使用个人整理篇
make的简单使用个人整理篇
格式:
目标 〔属性。。。〕
分隔符 〔依赖文件〕 〔;命令菜单〕
{ 制表符 命令菜单}
makefile 根据符号 tab 来辨认命令
make 命令的运行格式:
make 〔 option 〕 〔 macrodef 〕 〔 target 〕
make 将使用默认的 makefile 或 Makefile 作为配置文件
也可以指定配置文件,用参数- f
例如: make –f test1.mk
Option指出make的工作行为,make的具体选项有:
-c dir make在开始运行后的工作目录为指定目录
-e 不允许在makefile中队环境的宏赋值
-f filename 使用指定的文件作makefiel
-k 执行命令出错时,放弃改目标去维护其它目标
-n 按实际运行时的执行顺序现实命令,包括用@开头的命令,但不振的执行
-p -现实makefile中所有的宏定义,河内部规则
-r 忽略内部规则
-s 执行但不显示命令,常用来检查makefile的正确性
-S 执行make时 出错即退出
-t 修改每个目标文件的创建日期,但又不正的创建
-V 打印make的版本号
-x 将所有的宏定义输出的shell环境中
-i 忽略运行make 中的错误,而又不退出make
make 按规则中的依赖文件依次从左到右检查,除非依赖文件为源文件,否则 make 将递归方式检查该依赖文件的依赖文件。
可以用 touch 命令强行修改文件的修改时间
可以使用变量(宏)来缩减 makefile 的文件大小
定义: CC=gcc
引用: $(CC)
%o:%c
$(COMPILE) –o $@ $
可以同时使用多个依赖文件匹配多个目标文件
例如:
io.o init.o:muprogram.h
配合上面的规则,执行命令,表示该目标文件还同时依赖于 muprogram.h 文件
可以使用特殊的目标文件( clean )
例如:
clean:
-rm $(OBJS)
make 不会自动执行 clean 目标, clean 也没有任何依赖文件
makefile 文件中的分隔符:
::表示目标文件将多次出现。使用“:”时, make 规定目标文件只能出现一次
: ^ 将指定的依赖文件和目标文件已有的依赖文件合并起来,作为新的依赖文件列表
:-清除原有的依赖文件,将新的依赖文件列表作为目标的文件列表
:!对每个更新过的依赖文件都执行一次命令菜单
: | 只在内部规则中使用???
Makefile 文件中的命令行属性:
默认情况下,系统执行每条命令,打印该命令,如果在运行命令时出错,就会退出 make
命令行属性的选项:
- 忽略该行的错误,继续执行下一命令
+ 强行执行该命令
@ 不显示命令行
makefile 文件中的目标文件属性:
格式 1 :
属性 1 属性 2 。。。:目标文件 1 目标文件 2 。。。
格式 2 :
目标文件 属性 1 属性 2 。。。:
常见的几种属性:
.IGNORE 忽略错误,继续执行
.SILENT 不现实目标文件下的命令行
.PRECIOUS 保留中间目标文件。默认情况下,退出 make 时,系统将自动删除临时的中间目标文件。
伪目标选项:
伪目标 就是程序执行的一些与目标文件本身没有直接关系的辅助性操作。
1. 自定义伪目标
要求系统中没有重名的文件
2. 内部伪目标
.ERROR: 依赖文件 1 。。。 当执行错误时,显示错误信息,并完成简单的错误处理
.INCLUDE: makefile 文件 1 。。。 当执行到该伪目标时,插入其他 makefile 文件的内容,并且执行该内容。
例如: .INCLUDE : make.mk
当其他 makefile 文件不在同一目录下,使用格式:
.INCLUDE:dir1 dir2 …
或 .INCLUDE:dir/file
.IMPORT: 宏名 1 。。。 在环境变量中查找宏名,并使用。不需要命令行
make 本身定义了一个依赖文件 .EVERYTHING 可以使用环境中的所以宏定义,而不需要逐一列出宏名。
例如:
.IMPORT:.EVERYTHING
.EXPORT: 宏名 1 。。。 导出宏名到环境文件中
.SETDIR = path 指
文档评论(0)