编写跨平台Makefile的规则与约定详解

需积分: 44 76 下载量 79 浏览量 更新于2024-08-10 收藏 2.1MB PDF 举报
本资源是一份关于规则命令行约定的MapGIS 10教程,主要针对编写多系统兼容Makefile时需要注意的细节。作者强调了书写Makefile时应遵循的规范,以确保跨平台的兼容性。以下是关键知识点: 1. **命令选择**: - 为了避免系统间的不兼容,推荐使用`sh`作为Makefile规则的默认命令解释器,而非`csh`。 - `configure`脚本及Makefile中的命令建议使用通用选项,例如使用`mkdir -p`而非仅在特定系统上可用的选项。 2. **工具限制**: - 避免在规则命令行中创建符号链接(如`ln`),因为并非所有系统都支持,特别指出MS-DOS系统可能不支持。 - 建议使用变量代表编译器和工具命令,如`$(AR)`、`$(CC)`等,以便于统一管理和修改。 3. **压缩和管理目标**: - 可以在`dist`目标的命令行中使用`gzip`进行压缩。 - 当使用如`ranlib`、`ldconfig`等工具时,需检查系统支持情况,提供提示而非强制退出。 4. **伪目标与特殊目标**: - 介绍了Makefile中的伪目标,如`clean`、`install`等,它们没有实际的执行命令,但有特定的作用。 - 强制目标(无命令或依赖的规则)和空目标文件的处理。 - 特殊目标如多目标、多规则目标和静态模式的规则定义和语法。 5. **搜索路径设置**: - 使用`VPATH`变量进行一般搜索,`vpath`关键字用于选择性搜索。 - 详细解释了目录搜寻的机制,包括命令行搜索目录和隐含规则对搜索路径的影响。 6. **Makefile结构和解析**: - Makefile的组成部分,如内容、命名规则、包含其他Makefile、变量如`MAKEFILES`和`MAKEFILE_LIST`的使用。 - 描述了Makefile解析过程,包括变量取值、条件语句和规则的定义。 通过这份教程,读者可以掌握编写多平台兼容Makefile的技巧,确保其在不同操作系统环境下的有效运行。同时,理解Makefile规则的复杂性和灵活性对于构建和维护软件项目至关重要。