理解Makefile中的'+='操作符与变量追加

需积分: 34 34 下载量 73 浏览量 更新于2024-08-10 收藏 1.45MB PDF 举报
"这篇文档是关于STC8H系列单片机的技术参考手册,主要讨论了在编程过程中如何追加变量值,特别是在Makefile中的应用。文档提到了使用'='和'+='操作符的区别,并解释了这两种操作符在简单和复杂Makefile中的不同行为。此外,还介绍了GNU Make的基本概念和用法,包括Makefile的结构、规则、变量的设定以及自动推导规则等内容。文档由徐海兵翻译整理,日期为2004年9月11日。" 在STC8H系列单片机编程中,追加变量值是一个常见的操作。在Makefile中,这通过“+=”操作符实现。当使用“+=”追加变量值时,新值会被添加到变量的原始值后面,用空格分隔。例如,`objects += another.o` 将"another.o"添加到"objects"变量的值中。初始值如`objects = main.o foo.o bar.o utils.o`,追加后,"objects"的值变为`"main.o foo.o bar.o utils.o another.o"`。 "="和"+="在Makefile中的使用有微妙的差别: 1. 如果变量未定义,"+="会等同于"=",创建一个递归展开的变量。如果变量已经定义,"+="则保持其原有定义类型(可以参考6.2章节关于两种变量定义)。 2. 对于直接展开式变量(使用"=:定义的变量),"+="会在执行前替换并展开变量的当前值,然后在末尾追加新值,并用"="重新赋值。 GNU Make是一个强大的自动化构建工具,用于编译程序和管理项目。在介绍中,提到了Makefile的基本元素,如目标、依赖关系、变量设置、自动规则推导等。Makefile可以包含规则来指定如何从源文件生成目标文件,以及何时需要重新生成这些目标。规则的语法包括目标、依赖项和命令,其中依赖项可以使用通配符进行匹配,而目录搜索功能允许在多个路径中查找依赖文件。 此外,文档还涵盖了Makefile的一些高级特性,如伪目标、强制目标、空目标文件、特殊目标、多目标规则、静态模式规则等。这些特性使Makefile更加灵活,能处理各种复杂的构建需求。例如,静态模式规则允许用户自定义和扩展隐含规则,提高代码复用和效率。 这篇文档深入探讨了在STC8H单片机编程中如何有效地管理和追加变量值,并全面介绍了GNU Make的工作原理和使用技巧,对于编写和理解Makefile具有重要的指导价值。