Makefile使用程序.docx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Makefile 使用总结1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力.?本篇博客是基于?{精华} 跟我一起写 Makefile?而整理的, 有些删减, 追加了一些示例.非常感谢 gunguymadman_cu 提供如此详尽的Makefile介绍, 这正是我一直寻找的Makefile中文文档.?1.1 Makefile 主要的 5个部分 (显示规则, 隐晦规则, 变量定义, 文件指示, 注释)Makefile基本格式如下:target ... : prerequisites ... command ... ...其中,target??????? - 目标文件, 可以是 Object File, 也可以是可执行文件prerequisites - 生成 target 所需要的文件或者目标command?????? - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头?显示规则 :: 说明如何生成一个或多个目标文件(包括生成的文件, 文件的依赖文件, 生成的命令)隐晦规则 :: make的自动推导功能所执行的规则变量定义 :: Makefile中定义的变量文件指示 :: Makefile中引用其他Makefile; 指定Makefile中有效部分; 定义一个多行命令注释???? :: Makefile只有行注释 #, 如果要使用或者输出#字符, 需要进行转义, \#?1.2 GNU make 的工作方式读入主Makefile (主Makefile中可以引用其他Makefile)读入被include的其他Makefile初始化文件中的变量推导隐晦规则, 并分析所有规则为所有的目标文件创建依赖关系链根据依赖关系, 决定哪些目标要重新生成执行生成命令?2. Makefile 初级语法2.1 Makefile 规则2.1.1 规则语法规则主要有2部分: 依赖关系和生成目标的方法.语法有以下2种:target ... : prerequisites ... command ...或者target ... : prerequisites ; command command ...*注*?command太长, 可以用 \ 作为换行符?2.1.2 规则中的通配符*???? :: 表示任意一个或多个字符????? :: 表示任意一个字符[...] :: ex. [abcd] 表示a,b,c,d中任意一个字符, [^abcd]表示除a,b,c,d以外的字符, [0-9]表示 0~9中任意一个数字~???? :: 表示用户的home目录?2.1.3 路径搜索当一个Makefile中涉及到大量源文件时(这些源文件和Makefile极有可能不在同一个目录中),这时, 最好将源文件的路径明确在Makefile中, 便于编译时查找. Makefile中有个特殊的变量?VPATH?就是完成这个功能的.指定了?VPATH?之后, 如果当前目录中没有找到相应文件或依赖的文件, Makefile 回到?VPATH?指定的路径中再去查找..VPATH?使用方法:vpath directories??????????? :: 当前目录中找不到文件时, 就从directories中搜索vpath pattern directories? :: 符合pattern格式的文件, 就从directories中搜索vpath pattern??????????????? :: 清除符合pattern格式的文件搜索路径vpath????????????????????????? :: 清除所有已经设置好的文件路径?# 示例1 - 当前目录中找不到文件时, 按顺序从 src目录 ../parent-dir目录中查找文件VPATH src:../parent-dir# 示例2 - .h结尾的文件都从 ./header 目录中查找VPATH %.h ./header# 示例3 - 清除示例2中设置的规则VPATH %.h# 示例4 - 清除所有VPATH的设置VPATH?2.2 Makefile 中的变量2.2.1 变量定义 ( = or := )OBJS = programA.o programB.oOBJS-ADD = $(OBJS) programC.o# 或者OBJS := prog

文档评论(0)

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

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

1亿VIP精品文档

相关文档