遵循约定编写Makefile - MapGIS10教程
需积分: 44 26 浏览量
更新于2024-08-10
收藏 2.1MB PDF 举报
"Makefile是构建自动化工具,用于编译、链接和其他操作,遵循一系列约定以确保兼容性和易用性。在Makefile中遵循的基本约定包括设置`SHELL`变量以避免系统环境变量冲突,谨慎处理后缀和隐含规则,以及明确指定路径以避免歧义。GNU make提供更丰富的功能,如自动推导规则和变量,还有条件语句、变量取值和规则定义等。Makefile的规则定义了依赖关系,可以使用通配符、目录搜索等功能,并且有伪目标、静态模式规则等高级特性。"
在编写Makefile时,遵循一些基本的约定对于确保跨平台兼容性和简化维护至关重要。第14章“Makefile的约定”中提到的几个关键点包括:
1. **设置`SHELL`变量**:在Makefile开头定义`SHELL = /bin/sh`是为了确保Make使用指定的shell执行命令,而不是依赖于系统的环境变量,这可以避免不同make版本之间的不一致。
2. **处理后缀和隐含规则**:通过`.SUFFIXES`指令可以清空并重新定义可识别的后缀列表,以减少不同make版本之间的兼容性问题。例如,`.SUFFIXES: .c .o`将限制Makefile只处理.c和.o文件。
3. **路径明确化**:在处理文件路径时,应当明确指出是相对路径(如`./`表示当前目录)还是源代码目录(如`$(srcdir)`),以避免混淆。未指定路径的文件默认被认为是当前目录下的。
GNU make是Make的一个实现,它提供了许多扩展和便利的功能,例如:
- **变量**:可以定义和使用变量,简化Makefile的编写和维护。
- **自动推导规则**:make可以根据文件后缀自动推导编译和链接命令,减少显式规则的编写。
- **另类风格的Makefile**:支持使用函数和条件语句,使得Makefile更加灵活。
- **清除工作目录**:可以定义清理目标以删除中间文件和目标文件。
- **目录搜索**:通过`VPATH`变量或`vpath`指令可以指定搜索依赖文件的额外目录。
Makefile的规则是其核心部分,它们定义了目标及其依赖,以及如何构建目标。规则可以包括通配符来匹配多个文件,使用`vpath`进行目录搜索,或者利用静态模式规则来定义更通用的构建规则。此外,Makefile还有特殊目标,如`clean`用于清理,`all`作为默认目标,以及`PHONY`目标用于标识不应被误认为是文件的目标。
了解并遵循这些约定和使用技巧,不仅能使Makefile更易于理解和维护,也能确保项目在不同的开发环境中顺利构建。
2011-10-20 上传
2020-02-26 上传
2012-09-25 上传
2023-12-28 上传
2023-07-28 上传
2023-05-11 上传
2023-07-19 上传
2024-04-13 上传
2023-08-09 上传
![](https://profile-avatar.csdnimg.cn/be338a91100f4b00806cf71680882808_weixin_26782843.jpg!1)
幽灵机师
- 粉丝: 33
- 资源: 3994
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命