GNUmake中文手册:Stc8H单片机变量设置与Makefile详解
需积分: 34 51 浏览量
更新于2024-08-10
收藏 1.45MB PDF 举报
"如何设置变量-stc8h 系列单片机技术参考手册"
在 GNU Make 中,设置变量是构建 Makefile 的关键部分,用于存储和传递信息。本篇主要聚焦于如何在 Makefile 中定义和使用变量,适用于 STC8H 系列单片机的开发。
首先,变量可以通过“=”或“:=”进行定义。使用“=”定义的变量称为递归展开式变量,它的值在使用时才会展开,如果值中包含其他变量,会在遇到该变量时进行展开。例如:
```make
objects = main.o foo.o bar.o utils.o
```
这里的 `objects` 变量被定义为一个 `.o` 文件列表,其中的空格会被忽略。
而使用“:=”定义的变量为直接展开式变量,它的值在定义时就会立即展开,即使值中包含其他变量或函数的引用。这种方式有时更高效,但要注意可能会导致早期评估的问题。
定义变量时需注意以下几点:
1. 变量名可以包含其他变量或函数的引用,make 在读取时会进行替换。例如,`$(foo)bar` 可能会被替换为已经定义的 `foo` 变量的值加上 "bar"。
2. 变量的值长度没有硬性限制,但应考虑实际需求和机器内存。长变量值可通过换行并用反斜杠(\)连接来提高可读性和维护性。
3. 引用未定义的变量,默认其值为空。
4. 有些预定义的隐含变量,如 `CC`、`CFLAGS` 等,可以在 Makefile 中重新赋值,以适应项目需求。
5. 自动变量如 `$@`、`$<` 等,它们在不同规则中会有不同的值,用于在规则命令中引用目标和依赖等。
6. 使用“?=”赋值运算符可以确保只有当变量未定义时才进行赋值,避免覆盖已有值。
了解这些基本概念后,可以更好地编写 Makefile,有效地组织编译和构建流程。例如,可以创建规则来编译源文件:
```make
CFLAGS = -Wall -g
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
```
在这个例子中,`CFLAGS` 是一个预定义变量,用来设置编译选项,`%.o: %.c` 是一个模式规则,`$<` 和 `$@` 分别代表依赖文件和目标文件。
理解和熟练运用 GNU Make 中的变量机制,能够帮助开发者编写出高效且易于维护的 Makefile,从而优化 STC8H 系列单片机的软件构建过程。
109 浏览量
111 浏览量
2023-03-25 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
133 浏览量
点击了解资源详情
点击了解资源详情
Yu-Demon321
- 粉丝: 23
- 资源: 3956
最新资源
- AhoCorasick:Aho-Corasick字符串搜索算法PHP实现。 来自https://gerrit.wikimedia.orggAhoCorasick的镜像-我们的实际代码由Gerrit托管(请参阅https:www.mediawiki.orgwikiDeveloper_access以进行贡献)
- music-m:React,网易云音乐第三方Web端,:musical_note:
- lista-exercicios-js:使用JavaScript
- traktion:使用Trakt.tv API v2的服务器端应用程序的ORM样式客户端
- emacs-plsense:为Perl提供全方位的完成
- 算法:CC ++中的数据结构和算法
- javascript30
- js代码-这是一段测试代码
- nano-4.1.tar.gz
- Project1-Arif-XIRPL1
- grillode:一个用CoffeeScript为Node.js编写的基于Web的聊天应用程序
- dart_crypto:[Flutter]本项目基于Flutter_macos_v0.5.8-dev版本采用Dart语言开发。`DYFCryptoProvider`集成了Base64、3216 Bits MD5,AES,RSA等算法。(此Flutter项目是基于flutter_macos_v0.5.8以Dart语言开发的。 -dev。“ DYFCryptoProvider”集成了Base64、3216位MD5,AES和RSA算法。)
- GoSlurp:轻量级SQS消费实用程序,用于将消息持久存储到数据存储中
- theme-Ceara
- hemasrinim.github.io
- java代码-定义一个一维数组,求出数组的最大值,最小值,平均值。