没有合适的资源?快使用搜索试试~ 我知道了~
首页掌握Linux Makefile:自动化编译的关键
本文档是一份关于Linux Makefile的教程,主要针对GNU make系统,适用于Red Hat Linux 8.0,版本为3.80。Makefile在Linux编程中起着至关重要的作用,尤其是在大型项目管理中,它定义了整个工程的编译规则,确保代码按照特定顺序和依赖关系进行构建。对于一个专业的程序员来说,掌握Makefile的编写是衡量其能否处理复杂软件项目的重要标准。 Makefile的核心是"文件依赖性",它规定了源代码文件之间的依赖关系,例如,哪些文件需要先于其他文件编译,哪些文件只有在其依赖的文件被更新后才需要重新编译。这使得开发者能够自动化整个编译过程,提高软件开发的效率。通过编写Makefile,开发者可以编写复杂的规则,包括但不限于执行操作系统命令,实现编译、链接等步骤。 作者陈皓强调,虽然Windows的IDE通常提供了编译支持,但理解Makefile的工作原理有助于提升程序员的专业技能。本文将基于C/C++源代码进行讲解,因此,读者需要熟悉相关的编译器,如GCC和CC,以及它们的命令行选项和行为。虽然不同厂商的make工具可能有不同的语法,但本文着重介绍的是GNU make,因为它是最广泛使用的,且遵循POSIX.2标准。 为了深入学习,读者在阅读本文时,除了了解Makefile的基本语法和结构,还需要查阅编译器文档,以便更好地理解和应用Makefile到实际项目中。本文的目的是填补当时关于编写Makefile的教程空白,帮助开发者更好地利用make工具优化开发流程。
资源详情
资源推荐
好了,还是让我们来看一看如何书写规则。
一、规则举例
'00'0'0N0' 模块
07070'
看到这个例子,各位应该不是很陌生了,前面也已说过,' 是我们的目标,' 和 ' 是目标所
依赖的源文件,而只有一个命令“07070'E(以 ) 键开头)。这个规则告诉我们两件事:
、文件的依赖关系,' 依赖于 ' 和 ' 的文件,如果 ' 和 ' 的文件日期要比 '
文件日期要新,或是 ' 不存在,那么依赖关系发生。
、如果生成(或更新)' 文件。也就是那个 命令,其说明了,如何生成 ' 这个文件。(当然
' 文件 / 了 ' 文件)
二、规则的语法
00B/
或是这样:
00B/0S0
是文件名,以空格分开,可以使用通配符。一般来说,我们的目标基本上是一个文件,但也有可
能是多个文件。
是命令行,如果其不与“0B/E在一行,那么,必须以G) 键H开头,如果
和 B/ 在一行,那么可以用分号做为分隔。(见上)
B/ 也就是目标所依赖的文件(或依赖目标)。如果其中的某个文件要比目标文件要新,那么,
目标就被认为是“过时的”,被认为是需要重生成的。这个在前面已经讲过了。
如果命令太长,你可以使用反斜框(‘CT)作为换行符。 对一行上有多少个字符没有限制。规则告诉
两件事,文件的依赖关系和如何成成目标文件。
一般来说, 会以 ,4$: 的标准 -,也就是 来执行命令。
三、在规则中使用通配符
如果我们想定义一系列比较类似的文件,我们很自然地就想起使用通配符。 支持三各通配符:“FE,
“UE和“GHE。这是和 , 的 =7- 是相同的。
波 浪号(“VE)字符在文件名中也有比较特殊的用途。如果是“VE,这就表示当前用户的K(9*& 目
录下的 目录。而“V0E则表示用户 的宿主目录下的 目录。(这些都是 , 下
的小知识了, 也支持)而在 "# 或是 *-7%9-0下,用户没有宿主目录,那么波浪号所指的
目录则根据环境变量“(9*&E而定。
通配符代替了你一系列的文件,如“FE表示所以后缀为 的文件。一个需要我们注意的是,如果我们的
文件名中有通配符,如:“FE,那么可以用转义字符“CE,如“CFE来表示真实的“FE字符,而不是任意长度的
字符串。
好吧,还是先来看几个例子吧:
07'0F
上面这个例子我不不多说了,这是操作系统 - 所支持的通配符。这是在命令中的通配符。
0F
070KU
/0
上面这个例子说明了通配符也可以在我们的规则中,目标 依赖于所有的GH文件。其中的“KUE是一
个自动化变量,我会在后面给你讲述。
;0J0F
上 面这个例子,表示了,通符同样可以用在变量中。并不是说GFH会展开,不!; 的值就是
“FE。* ! 中的变量其实就是 1122中的宏。如果你要让通配符在变量中展开,也就是让
; 的值是所有GH的文件名的集合,那么,你可以这样:
;0J0KL#0F@
这种用法由关键字“#E指出,关于 * ! 的关键字,我们将在后面讨论。
四、文件搜寻
在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。
所以,当 需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径
告诉 ,让 在自动去找。
* ! 文件中的特殊变量“.8A)(E就是完成这个功能的,如果没有指明这个变量, 只会在当前
的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么, 就会在当当前目录找不到的情
况下,到所指定的目录中去找寻文件了。
.8A)(0J0
上面的的定义指定两个目录,“E和“E, 会按照这个顺序进行搜索。目录由“冒号”分隔。
(当然,当前目录永远是最高优先搜索的地方)
另 一个设置文件搜索路径的方法是使用 的“E关键字(注意,它是全小写的),这不是变量,
这是一个 的关键字,这和上面提到的那个 .8A)( 变量很类似,但是它更为灵活。它可以指定不同
的文件在不同的搜索目录中。这是一个很灵活的功能。它的使用方法有三种:
、0OP0OP
为符合模式OP的文件指定搜索目录OP。
、0OP
清除符合模式OP的文件的搜索目录。
、
清除所有已被设置好了的文件搜索目录。
0使用方法中的OP需要包含“WE字符。“WE的意思是匹配零或若干字符,例如,“WE表示
所有以“E结尾的文 件。OP指定了要搜索的文件集,而OP则指定了OP的
文件集的 搜索的目录。例如:
0W0
该语句表示,要求 在“E目录下搜索所有以“E结尾的文件。(如果某文件在当前目录没
有找到的话)
我们可以连续地使用 语句,以指定不同搜索策略。如果连续的 语句中出现了相同的
OP,或是被重复了的OP,那么, 会按照 语句的先后顺序来执行搜索。如:
0W0'
0W0
0W0
剩余63页未读,继续阅读
yclover789
- 粉丝: 2
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功