理解Makefile中的变量引用与规则
需积分: 33 70 浏览量
更新于2024-08-09
收藏 2.24MB PDF 举报
"变量的引用在Makefile中的使用"
在Makefile中,变量的引用是一个重要的概念,它允许我们存储和重用命令、文件列表等信息,提高Makefile的可读性和可维护性。根据标题和描述,本文主要讨论了在低kev下基于图像的高级虚拟单能双源双能CT数据重建技术如何通过提高胰腺癌患者门静脉系统的图像质量,但这里我们将聚焦于Makefile中的变量引用。
**6.1 变量的引用**
在Makefile中定义变量后,可以使用两种方式引用它:`$(VARIABLE_NAME)` 或 `${VARIABLE_NAME}`。例如,如果你想引用名为`foo`的变量,你可以写成`$(foo)`或`${foo}`。需要注意的是,由于美元符号`$`在Makefile中有特殊含义,表示变量引用,所以在命令或文件名中如果需要使用`$`,则需要写成`$$`来表示一个实际的美元符号。
下面是一个简单的例子,展示了如何使用变量存储`.o`文件的列表,并在构建程序时使用它们:
```makefile
objects = program.o foo.o utils.o
program : $(objects)
cc -o program $(objects)
$(objects) : defs.h
```
**变量的展开过程**
变量的展开是一个简单的文本替换过程。当Makefile解析到变量引用时,它会用变量的值替换引用。在这个过程中,变量值中的前导空格会被忽略。例如:
```makefile
foo = c
prog.o : prog.$(foo)
$(foo) $(foo) -$(foo) prog.$(foo)
```
展开后,这将变成:
```makefile
prog.c : prog.c
cc -c prog.c
```
这个例子说明了变量展开与C语言中的宏展开类似,都是文本替换。然而,这种复杂的变量使用方式并不推荐,因为可能会导致不必要的问题。
**简化的变量引用**
在Makefile中,如果变量名是单个字符,可以简化为`$x`的形式,如`$f`。但是,对于多字符的变量,必须使用括号,比如`$(foo)`,否则Makefile可能只会识别第一个字符作为变量,如`$PATH`会被解析为`P`。
**GNUmake中文手册**
这个手册提供了关于GNUmake的详细信息,包括Makefile的结构、规则、变量、自动推导规则等内容,是学习和理解Makefile的宝贵资源。手册中涵盖了许多主题,从基本概念到高级特性,如包含其他Makefile、条件语句、规则的解析和执行机制等。
变量引用在Makefile中扮演着核心角色,允许我们组织和重用代码,简化Makefile的编写。理解和熟练掌握变量的使用是编写高效Makefile的关键。在实际应用中,应遵循良好的实践,避免过于复杂的变量使用,以保持Makefile的清晰和易于维护。
2020-05-25 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-11-08 上传
柯必Da
- 粉丝: 42
- 资源: 3795
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍