GNU make中文手册:后缀规则与缺省规则详解

需积分: 4 65 下载量 119 浏览量 更新于2024-08-09 收藏 4.21MB PDF 举报
"GNU make makefile 中文手册" 在GNU Make中,Makefile是用于控制程序构建过程的文本文件。Makefile包含了一系列的规则,指导make工具如何编译、链接源代码,以及执行其他构建任务。本手册介绍了Makefile的相关概念和语法。 9.6 缺省规则是Makefile中的一种特殊机制,它允许在没有明确规则或者隐含规则能处理目标文件时,提供一个默认的构建行为。通过使用`%::`这一后缀规则或者`.DEFAULT`伪目标,可以定义这样的缺省动作。例如,`%::`规则会使得对所有找不到命令的目标文件执行`touch`命令,创建一个空文件。而`.DEFAULT`则可以被用作一个命令集合,当没有其他规则适用时执行。 9.7 后缀规则是Makefile的早期形式,主要用于隐含规则的定义。它分为双后缀规则和单后缀规则。双后缀规则如".o"和".c"对应的是将目标文件的".o"后缀替换为依赖文件的".c"后缀,相当于模式规则`%o : %c`。单后缀规则如".c"则意味着依赖文件是在目标文件名后添加".c"后缀得到的,等价于模式规则`% : %c`。 Makefile的基本结构包括目标(target)、依赖文件(dependencies)和命令(commands)。目标可以是源代码文件、编译后的对象文件或者是执行文件。依赖文件是目标需要先更新的文件,通常是源代码文件。命令则是执行的构建操作,比如编译、链接等。 在Makefile中,变量的使用非常常见,可以存储路径、命令或其他常量。自动变量如`$@`代表当前目标,`$<`代表第一个依赖文件。此外,make还支持模式规则(pattern rules),它们比后缀规则更灵活,可以匹配多个文件名模式。 隐含规则是预定义的规则,比如`.c`文件通常会通过`gcc`编译成`.o`文件。make会自动应用这些规则,除非用户在Makefile中提供了自定义规则。`make`会根据目标文件和依赖文件的修改时间来决定是否需要重新构建目标。 Makefile还可以包含其他makefile文件,这可以通过`include`指令实现,便于管理大型项目。`MAKEFILES`变量可以指定额外的Makefile位置,而`MAKEFILE_LIST`记录了所有被读入的Makefile文件名。 在解析Makefile时,make会依次进行变量赋值、条件语句处理、规则定义等步骤。目录搜索功能(通过`VPATH`和`vpath`)使得make可以在多个目录下查找源文件。伪目标如`.PHONY`用于标记那些实际上不存在但需要执行的命令,以避免与同名文件产生混淆。 GNU Make的Makefile系统是一个强大且灵活的构建工具,它通过规则、变量、隐含规则和特殊目标等机制,为软件构建提供了自动化和可扩展性的解决方案。了解并熟练掌握Makefile的编写,对于高效管理C/C++或者其他需要编译的项目至关重要。