Makefile指南:环境变量与多行定义

需积分: 50 401 下载量 193 浏览量 更新于2024-08-10 收藏 964KB PDF 举报
"环境变量-算法引论:一种创造性方法---高清版" 本文主要讨论了Makefile中的两种设置变量的方法——单行赋值和多行赋值,并介绍了环境变量的使用。作者是陈皓,该资源可能来自《跟我一起写Makefile》这本书。 1. 多行变量: 在Makefile中,`define`关键字用于定义多行变量。这种方式允许变量的值跨越多行,方便组织复杂的命令序列。定义变量时,`define`后紧跟变量名,然后在新的一行开始定义变量的值,直到遇到`endef`关键字结束。这些值可以包含函数、命令、文本或其它变量。由于命令通常以制表符([Tab])开头,如果在`define`定义的命令变量中没有制表符,make将不会将其视为命令。例如: ```makefile define two-lines echo foo echo $(bar) endef ``` 2. 环境变量: 当make运行时,它会加载系统环境变量到Makefile中。这意味着,可以在运行make时通过设置环境变量来影响Makefile的行为。环境变量可以用来传递配置信息或者作为Makefile中变量的默认值。例如,如果你设置了环境变量`CC`,那么在Makefile中未定义`CC`时,make会使用这个环境变量的值作为编译器。 3. Makefile基本结构: - 显式规则:直接指定目标及其依赖和构建命令。 - 隐晦规则:make内置的规则,用于处理常见文件类型,如编译C源文件为对象文件。 - 变量定义:存储可复用的值,简化Makefile的编写。 - 文件指示:如`.PHONY`用于标记伪目标,确保make总是执行对应的命令。 - 注释:以`#`开始的行被视为注释。 4. 其他Makefile概念: - 规则的语法包括目标、依赖和命令。 - 通配符(`*`)用于匹配一组文件。 - 文件搜寻和路径处理,如`$(wildcard)`函数用于查找匹配的文件。 - 伪目标(如`.PHONY`、`.DEFAULT`)不对应实际文件,但作为目标执行命令。 - 静态模式规则允许更灵活地定义规则。 - 自动依赖性生成,简化了管理依赖关系的过程。 - 命令执行的控制,包括错误处理和命令显示选项。 - 变量的高级用法,如变量的叠加、覆盖和条件语句。 - 函数的使用,如字符串处理和文件名操作,增强了Makefile的表达能力。 总结来说,这个资源详细介绍了Makefile中的变量使用和环境变量的集成,为编写和理解Makefile提供了深入的指导。通过学习这些内容,开发者可以更有效地管理和自动化构建过程。