GNUMAKE中文手册:变量基础与Makefile解析
需积分: 50 67 浏览量
更新于2024-08-06
收藏 860KB PDF 举报
"变量的基础-thomas calculus 13th edition"
在Makefile中,变量是核心概念之一,用于存储和重用数据。本资源主要介绍了Makefile中的变量基础及其使用方法。
1. 变量声明与使用:
变量在声明时需要赋予初值,这通常是在Makefile的顶部进行。变量的赋值使用等号“=”。例如,`objects = program.o foo.o utils.o`。在使用变量时,需在变量名前加上美元符号“$”,以`$(objects)`的方式引用。为了避免与Shell中的特殊字符冲突,推荐使用小括号或大括号将变量包含起来,如`$(objects)`或`${objects}`。
2. 双美元符号“$$”:
如果你确实需要在命令中使用美元符号“$”,则需要写成“$$”来转义,以便Makefile正确解析。例如,`cc -o program $$objects`。
3. 变量展开:
变量在被引用的位置会立即展开其值,这种行为类似于C/C++中的宏展开。例如,`program : $(objects)`,在执行时,`$(objects)`会被替换为其定义时的值。
4. 变量类型:
Makefile中有两种主要类型的变量:自动变量和用户定义变量。自动变量是Make内部定义的,如`$@`代表目标文件,`$<`代表第一个依赖文件。用户定义变量由用户根据需要创建。
5. 变量的扩展:
- 递归扩展变量(默认):变量的值在引用时展开,允许变量嵌套,如`foo = bar $(bar)`, `bar = baz`,则`$(foo)`会扩展为`bar baz baz`。
- 非递归扩展变量(使用`:=`或`?=`赋值):变量只在赋值时展开一次,适合于需要一次性计算的值。
6. 追加赋值(+=):
使用`+=`操作符可以在现有变量值后面添加新值,而不覆盖原有值,如`objects += extra.o`。
7. `override`指示符:
当在Makefile或命令行中使用`override`重新定义变量时,即使在父Makefile中已经定义过,也会覆盖原有定义。
8. 多行变量:
变量值可以跨越多行,通过在行尾添加反斜杠“\”来实现。
9. 环境变量:
Makefile可以使用Shell环境中的变量,通过`$(VARNAME)`引用。如果在Makefile中定义了同名变量,环境变量的值将被覆盖。
10. 目标变量与模式变量:
目标变量是与特定目标相关的变量,而模式变量应用于匹配特定模式的目标,如`%.o: %.c`中的`%`是模式变量,代表任何以`.c`结尾的文件。
11. 条件判断:
Makefile支持条件语句,用于根据不同的条件执行不同的代码块,如`ifdef`, `ifndef`, `ifeq`, `ifneq`, `else`, `endif`等。
12. 函数:
Makefile支持一系列内置函数,如字符串处理、文件名操作、循环和逻辑判断等,增强了Makefile的表达能力。
13. make的运行:
用户可以通过各种参数指定Makefile、目标、规则检查等,控制make的执行流程,例如`-f`指定Makefile,`-t`仅触制作标记,`-k`继续执行即使有错误等。
以上内容概述了Makefile中变量的使用,以及相关的规则、条件判断和函数的运用,为编写高效、灵活的构建脚本提供了基础。理解并熟练运用这些知识点,能帮助开发者更好地管理编译过程。
2018-10-10 上传
2018-10-31 上传
2019-05-27 上传
2023-12-06 上传
2023-11-11 上传
2023-10-23 上传
2023-10-07 上传
2023-08-01 上传
2023-08-13 上传
Sylviazn
- 粉丝: 29
- 资源: 3879
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜