GNU make中文手册:变量取值与Makefile规则解析

需积分: 44 76 下载量 68 浏览量 更新于2024-08-10 收藏 2.1MB PDF 举报
"该资源是关于MapGIS 10的教程,主要讲解了在Makefile中如何处理变量取值的方法,包括通过命令行选项、override指示符、在makefile文件中赋值、设置为系统环境变量以及使用自动化变量。此外,还提到了隐含变量和多行定义等概念。" 在Makefile编程中,变量取值是构建过程中的关键部分,它允许灵活地管理和重用构建指令。以下是对标题和描述中涉及知识点的详细说明: 1. **命令行选项赋值**:在运行`make`时,你可以通过命令行选项改变已定义的变量值。这允许你在执行构建时临时调整某些参数,而不必修改makefile本身。 2. **override指示符**:`override`用于确保即使目标已经在父makefile中定义,当前makefile中的赋值也会生效。这在需要覆盖默认设置或特定场景下的配置时非常有用。 3. **在makefile中赋值**:变量可以通过简单的赋值语句在makefile中设置,如`VAR = value`。这种方式的赋值是非延迟的,即变量值在读取时立即计算。 4. **多行定义**:使用`define`关键字可以进行多行变量赋值,这对于定义复杂的构建规则或包含多个命令的变量很有帮助。定义结束时使用`endef`。 5. **系统环境变量**:所有系统环境变量都可以被make使用,这意味着可以在shell环境中设置的变量也可以在makefile中访问,这为跨环境的配置提供了一种通用的方法。 6. **自动化变量**:自动化变量如`$@`(代表目标文件)、`$<`(代表第一个依赖文件)等,它们在不同的规则上下文中会自动获得相应的值,简化了规则的编写。 7. **隐含变量**:Make有一些预设的变量,如`CC`(C编译器)和`CFLAGS`(C编译选项),它们具有固定的默认值,可以被用户覆盖以自定义构建行为。 在Makefile中,了解这些变量取值方式以及它们的使用时机至关重要,因为它们有助于编写出更高效、可维护的构建脚本。例如,通过合理利用自动化变量,可以减少重复代码,提高可读性;而使用环境变量则可以保持配置的一致性,尤其是在多项目环境中。此外,通过override指示符,可以在不改变原始makefile的情况下对特定构建过程进行微调。掌握这些知识点将使你在管理Makefile时更加得心应手。