GNUMAKE中文手册:变量中的变量解析

需积分: 50 25 下载量 192 浏览量 更新于2024-08-06 收藏 860KB PDF 举报
"《变量中的变量 - thomas calculus 13th edition》是关于Makefile中使用变量的一个讨论,特别是如何在变量中嵌套定义变量。在Makefile中,有两类方式来定义变量的值,一种是使用简单的赋值运算符“=”。这种方式允许在变量的右侧使用其他变量来构建其值,即使这些被引用的变量在其后定义,这被称为延迟扩展。例如: ```makefile foo = $(bar) bar = $(ugh) ugh = Huh? all: echo $(foo) ``` 在这个例子中,`foo`的值会是`$(ugh)`的值,即`Huh?`,因为Makefile在执行命令前会解析所有变量,确保所有变量都被正确地替换。 Makefile的变量基础包括变量的定义和使用,变量可以存储文本字符串,这些字符串可以是简单的文本,也可以是复杂的表达式。除了基本的赋值外,还有其他高级用法,如追加变量值(`+=`),覆盖变量(`override`),以及多行变量等。 变量的高级用法包括条件判断和函数的使用。条件判断允许根据特定条件决定是否执行某些规则或设置变量值。函数则提供了一种更强大的方式来操作变量,如字符串处理、文件名操作、循环和条件检查等。例如,`ifeq`函数可以用于进行条件比较,`$(shell)`函数可以执行系统命令并返回结果。 在Makefile中,变量分为几种类型,如全局变量和局部变量,目标变量和模式变量等。全局变量在整个Makefile中可见,而局部变量只在定义它们的规则或者函数内部有效。模式变量则允许在规则中使用通配符来匹配一组文件。 Makefile的执行过程涉及到规则的解析、依赖性检查以及命令的执行。make会根据目标文件的时间戳判断是否需要重新构建。如果目标文件比它的依赖文件旧或者依赖文件有改动,那么对应的规则就会被执行。 此外,Makefile还可以引用其他Makefile,利用环境变量,甚至可以自定义隐含规则来简化常见任务的编写。隐含规则是预定义的构建模式,可以自动应用到没有明确规则的文件上,大大提高了编写Makefile的效率。 《变量中的变量 - thomas calculus 13th edition》这一主题深入探讨了Makefile中变量的使用技巧和复杂性,对于理解和编写高效Makefile具有重要指导意义。"