Makefile指南:文件名操作与函数解析

需积分: 39 20 下载量 25 浏览量 更新于2024-08-06 收藏 581KB PDF 举报
这篇文档主要介绍了如何使用Makefile进行程序构建,并深入探讨了文件名操作函数在Makefile中的应用。Makefile是自动化构建工具,用于管理编译和链接过程,简化了构建过程的复杂性。 在Makefile中,文件名操作函数是处理文件路径的重要工具,主要包括`dir`和`notdir`两个函数。 1. `dir`函数: `dir <names...>`用于从给定的一系列文件名中提取目录部分。如果文件名包含反斜杠("/"),它会返回最后一个反斜杠之前的部分作为目录路径。若文件名没有反斜杠,则返回当前目录“./”。例如,`$(dir src/foo.c hacks)`将返回`"src/ ./"`。 2. `notdir`函数: `notdir <names...>`与`dir`相反,它从文件名中去除目录部分,只保留文件名本身。所以对于同样的例子,`$(notdir src/foo.c hacks)`将返回`"foo.c hacks"`。 Makefile的核心在于规则,它们定义了如何根据源文件构建目标文件。规则包括显式规则和隐晦规则,显式规则明确指定了构建目标所需的命令,而隐晦规则则是预定义的,可以自动匹配类似的构建任务。 在编写Makefile时,还可以使用变量来存储重复使用的文本,如文件路径或编译选项,减少代码冗余。通过`make`的工作方式,它会检查目标文件的修改时间,如果源文件更新了,就执行相应的构建命令。 此外,Makefile中还涉及到文件指示、注释、引用其他Makefile、环境变量`MAKEFILES`以及make的工作模式等概念。书写规则时,可以使用通配符、文件搜索、伪目标、多目标、静态模式、自动生成依赖性等功能,使Makefile更具灵活性。 在命令书写方面,可以控制命令的可见性和执行方式,处理命令出错的情况,以及嵌套执行`make`。变量的使用则涵盖了基础赋值、变量中的变量、追加值、覆盖和多行变量等内容。 最后,Makefile提供了条件判断和一系列函数,如字符串处理函数,用于字符串替换、过滤、排序等操作,以及文件名操作函数,如`dir`和`notdir`,它们帮助处理和操作文件路径,极大地增强了Makefile的功能和实用性。