理解Makefile中的变量引用与展开
下载需积分: 44 | PDF格式 | 2.1MB |
更新于2024-08-10
| 144 浏览量 | 举报
"Makefile教程-变量的引用"
在Makefile编程中,变量的引用是一个关键概念。变量允许我们将常用的数据存储起来,以便在Makefile的多个地方重复使用,提高代码的可读性和维护性。本教程以"变量的引用"为主题,详细解释了在MapGIS10环境下Makefile中如何使用变量。
6.1 变量的引用
变量的引用通常有两种形式:`$(VARIABLE_NAME)`和`${VARIABLE_NAME}`。例如,如果你想引用名为`foo`的变量,可以写成`$(foo)`或`${foo}`。需要注意的是,由于美元符号`$`在Makefile中有特殊含义(用于引用变量),所以在命令或文件名中如果需要使用美元符号,必须写成`$$`,以避免混淆。变量的引用可以在Makefile的多个上下文中使用,包括目标、依赖、命令、指示符以及新的变量赋值。
以下是一个实例:
```makefile
objects = program.o foo.o utils.o
program : $(objects)
cc -o program $(objects)
$(objects) : defs.h
```
在这个例子中,`objects`变量保存了所有`.o`文件的列表,当构建`program`时,Makefile会将`$(objects)`展开为其值,从而正确地编译和链接所有相关的目标文件。
变量的展开是一个严格的文本替换过程,这意味着变量值会被准确地替换到引用它的位置。比如:
```makefile
foo = c
prog.o : prog.$(foo)
$(foo) $(foo) -$(foo) prog.$(foo)
```
展开后变成:
```makefile
prog.c : prog.c
cc -c prog.c
```
这个例子展示了变量展开的过程,类似于C语言中的宏展开,但请注意,直接这样编写Makefile并不推荐,因为可能会导致不必要的复杂性。
在某些情况下,如变量名只有一个字符时,可以简写为`$x`的形式引用,但这仅限于简单的变量和自动化变量。对于多字符的变量,必须使用括号`$()`或`${}`来确保正确引用,例如`$PATH`会被视为单个字符的变量,而不是整个字符串。
在学习Makefile时,理解变量的引用和展开机制至关重要,因为它们构成了Makefile动态处理任务的基础。通过合理使用变量,可以极大地简化Makefile的编写,使其更加灵活和易于维护。在实际编写Makefile时,应遵循良好的编程习惯,避免过度复杂的变量引用结构,以减少潜在的错误和困惑。
相关推荐
美自
- 粉丝: 16
- 资源: 3943
最新资源
- Homepare_App_1
- Cine-Data:使用TMDB API的电影搜索器和跟踪器
- brick:Brick Mag 原型
- 如何做好企业的培训(2个PPT)
- 企业大堂3D效果图模型
- 由Arduino提供支持的小吃自动售货机-项目开发
- dflex:JavaScriptJavaScript项目来操纵DOM元素
- Personal-Portfolio-Website:个人投资组合网站
- 集团管理及组织架构培训需求DOC
- color-file:根据模式和文件扩展名为迷你缓冲区中的文件着色
- Visual-Web:用于HTML,CSS和TypeScriptJavaScript的可视工具
- 电力设备新能源年月投资策略国内需求拉动下半年增长电网投资加速-36页.pdf.zip
- jdk-8u151-x64.zip
- doodle-jump
- OpenWrt-Newifi_D2:OpenWrt-Newifi_D2
- Spherium:运用 OpenGL 的力量,创造菊石、克莱因瓶和好奇的球体!-matlab开发