GNU make中文手册:隐含规则与MapGIS10教程
需积分: 44 38 浏览量
更新于2024-08-10
收藏 2.1MB PDF 举报
"这篇教程是关于MapGIS 10的,重点讨论了Makefile中的隐含规则搜索。Makefile是构建软件项目时管理编译和链接过程的文件,它定义了目标文件及其依赖关系,以及如何从源文件生成目标文件的规则。在描述中提到了一个例子,解释了即使目标文件的依赖已经明确指定,如`foo.o: foo.p`,make程序仍然会搜索隐含规则,比如如果存在`foo.c`源文件,make会优先使用针对`.c`文件的隐含规则(通常为编译C源代码),即`cc`来编译,而不是按照`.p`文件的规则来执行。这是因为隐含规则列表中,`.c`文件的规则优先级高于`.p`文件的规则。此外,当需要为特定目标提供明确的构建步骤时,规则中必须包含命令行,且这些命令必须详细说明构建目标所需的操作。"
在GNUmake中,隐含规则是一种预设的构建规则,用于处理常见文件类型,例如编译C或C++源文件。当Makefile中没有显式指定某个目标的构建方法时,make会尝试应用这些隐含规则。例如,对于`.c`文件,隐含规则可能是先使用`gcc`或`g++`进行编译,然后用`ld`链接生成最终的目标文件。隐含规则的存在简化了Makefile的编写,因为用户不必为每一步都写出详细的命令。
隐含规则的搜索算法涉及到查找与目标文件类型匹配的规则,并根据文件扩展名的优先级顺序来决定使用哪一个。在这个例子中,由于`.c`文件的隐含规则在`.p`文件之前,所以即使`foo.o`依赖于`foo.p`,如果存在`foo.c`,make会优先考虑`foo.c`。
在Makefile中,可以使用`$(MAKEFILE_LIST)`变量来获取当前正在使用的Makefile列表,而`$(VPATH)`变量则可以设置搜索源文件的目录路径,允许make在多个目录中查找依赖文件。此外,`vpath`指令可以更精确地控制哪些类型的文件在哪些目录中进行搜索。
Makefile的规则通常包括目标、依赖和命令三部分,它们定义了如何从依赖文件构建目标文件。规则的语法包括通配符的使用,如`*`,可以匹配任何字符,但也会带来一些问题,例如可能会忽略某些文件。`wildcard`函数可以用来获取当前目录下符合特定模式的所有文件名。
除了显式规则,Makefile还包含隐含规则和伪目标。隐含规则是预定义的构建步骤,而伪目标如`.PHONY`则用于标记那些实际上并不对应物理文件的目标,确保它们总是被重新构建。
Makefile是构建流程的蓝图,通过定义规则和依赖关系,自动化软件项目的构建过程。隐含规则是其核心特性之一,它允许make程序灵活地处理各种源文件类型,而无需在Makefile中显式列出所有的构建步骤。在实际项目中,理解并熟练运用这些概念能有效提高构建效率。
2011-10-20 上传
2020-02-26 上传
2012-09-25 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
jiyulishang
- 粉丝: 25
- 资源: 3813
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器