使用通配符构建规则 - makefile 教程

需积分: 50 96 下载量 169 浏览量 更新于2024-08-07 收藏 632KB PDF 举报
"这篇文档是关于使用`makefile`进行程序构建的教程,重点讲解了如何在规则中使用通配符。文档由陈皓撰写,是`PDF重制版`,旨在帮助读者理解和编写`makefile`。" 在`make`工具中,规则是用来指定如何从`prerequisites`(依赖文件)生成`targets`(目标文件)的指令。规则的基本语法是将`targets`列在冒号(`:`)前,接着是依赖文件,然后是执行的命令。如果命令与`target:prerequisites`不在同一行,则需以Tab键开头,或者在同行中用分号(`;`)分隔。当依赖文件比目标文件新时,`make`会认为目标需要更新并执行相应的命令。 在规则中使用通配符能简化对一组相似文件的管理。`make`支持三种通配符:`*`、`?`和`~`。`*`代表任意数量的任意字符,`?`代表单个任意字符,`~`在Unix系统中用于表示用户的家目录。例如,`*.c`匹配所有扩展名为`.c`的文件。需要注意的是,如果文件名中包含通配符,如`*`,则需要使用反斜杠(`\`)进行转义,防止其被解释为通配符。 文档还提到了`clean`规则,它通常用于删除编译过程中产生的临时文件,如`rm -f *.o`,这会删除所有以`.o`结尾的文件。通过在`clean:`后面添加命令,我们可以执行更多的清理任务。 `make`默认使用`/bin/sh`执行命令,但也可以通过设置变量来改变这一点。文件搜寻、伪目标、多目标、静态模式、自动生成依赖性等都是`makefile`中重要的概念。在书写命令时,可以控制命令的可见性和执行方式,甚至可以定义命令包裹以实现更复杂的逻辑。 变量在`makefile`中扮演着关键角色,可以存储和传递值,包括基础变量、变量中的变量、追加值以及变量的高级用法。此外,还有条件判断和函数的使用,这些使得`makefile`更具灵活性和表达力。函数可用于字符串处理和文件名操作,例如`subst`、`patsubst`、`strip`等,它们允许在规则和命令中进行更复杂的文本操作。 总结来说,这篇文档深入讲解了`makefile`的规则语法和通配符的使用,同时也涵盖了变量、条件语句和函数等高级特性,是学习和编写`makefile`的宝贵资源。