深入理解makefile:变量设置与SSE4.2命令集

需积分: 4 65 下载量 93 浏览量 更新于2024-08-09 收藏 4.21MB PDF 举报
"本文档是GNU make中文手册的一部分,涵盖了如何设置变量以及变量的使用方法。主要内容包括变量的取值方式、如何通过命令行选项、makefile文件、系统环境变量和自动化变量设置值,以及变量的设置规则,如递归展开和直接展开的区别。此外,还介绍了Makefile的基本概念、规则和工作原理。" 在GNU make中,变量是构建Makefile的核心元素,用于存储可重复使用的值,如文件列表或命令。变量可以通过多种方式设置: 1. **命令行选项**:在运行make时,可以使用`override`指示符通过命令行选项改变已定义的变量值。 2. **makefile文件**:通过`=`, `:=`或`define`语句在makefile中设置变量。`=`定义的变量是递归展开的,意味着在使用时才展开其值;`:=`定义的变量是直接展开的,值在定义时即被计算。 3. **系统环境变量**:所有系统环境变量都可以被make使用,可以直接设置为变量的值。 4. **自动化变量**:在不同规则中,自动化变量会有特定的值,如`$@`表示目标文件,`$<`表示第一个依赖文件等。 变量设置有以下几个要点: 1. **变量名的创建**:变量名可以包含函数和变量引用,make会根据已定义的变量进行替换。 2. **变量值的长度**:变量值长度无限制,但应考虑实际内存限制。长值可以分成多行,使用反斜杠`\`连接,保持可读性。 3. **未定义变量的默认值**:如果引用未定义的变量,make会将其值视为空。 Makefile的基本结构包括目标、依赖和命令,规则定义了如何从依赖文件生成目标文件。`Makefile`可以包含规则、变量定义和其他控制make行为的指令。通过指定变量,可以简化Makefile的编写和维护,例如使用变量来存储一系列文件名,或者设置通用的编译选项。 此外,`VPATH`变量用于指定源文件的搜索路径,`vpath`关键字允许更精细的目录配置。`wildcard`函数用于获取当前目录下的匹配文件名。Makefile中的特殊目标,如`.PHONY`用于定义伪目标,确保make总是执行相应的命令,即使目标文件已经存在。 理解和熟练运用变量设置是编写高效、灵活的Makefile的关键,它有助于构建复杂的构建系统,自动化软件编译和构建流程。