GNU make 编程指南:后缀规则与缺省规则解析

需积分: 50 47 下载量 200 浏览量 更新于2024-08-08 收藏 1.24MB PDF 举报
"GNU make中文手册,ver-3.8,由徐海兵翻译,2004年9月11日发布" 在GNU Make中,后缀规则是一种用于定义隐含规则的传统方法,尽管现代的make已经使用模式规则作为更清晰的替代。后缀规则分为两种类型:双后缀规则和单后缀规则。 1. 双后缀规则:这类规则定义了一对后缀,比如目标文件的后缀和依赖文件的后缀,如".o"和".c"。这样的规则会匹配所有具有指定目标后缀的文件,并将这些文件的后缀替换为依赖文件的后缀,从而确定依赖文件。例如,".o"和".c"的双后缀规则相当于模式规则`%o : %c`,意味着将.c文件编译成.o文件。 2. 单后缀规则:只定义一种后缀,通常为源文件的后缀,如".c"。它能匹配任何文件,并将源文件的后缀添加到目标文件名后,生成依赖文件名。例如,单后缀规则".c"等同于模式规则`% :`,表示所有文件都依赖于它们的.c源文件。 缺省规则是一种在Makefile中定义的规则,当没有明确的重建规则或者隐含规则适用时,用于处理目标文件的创建。可以通过万用规则(如`%:: touch $@`)或伪目标`.DEFAULT`(如`.DEFAULT: touch $@`)来实现。使用`.DEFAULT`时,如果没有指定命令,那么默认执行的命令就是空白,即不做任何操作。此外,缺省规则也可以用来在Makefile之间进行重载,以便在一个Makefile中调用和执行另一个Makefile的规则。 GNU Make还提供了其他高级特性,如变量(用于存储值)、自动变量(自动获取目标和依赖的路径及名称)、通配符(`*`和`?`)以及目录搜索功能,允许在多个目录中查找文件。此外,Makefile还可以包含其他Makefile,通过`include`指令实现,这有助于代码组织和复用。 Makefile的解析过程包括变量取值、条件语句评估以及规则的定义。make会按照特定顺序读取和执行Makefile中的指令,以决定哪些目标需要被更新,然后运行相应的命令来构建或更新目标文件。 GNU Make是一个强大的自动化构建工具,其核心在于Makefile中的规则和隐含规则,这些规则定义了文件间的依赖关系和构建过程。通过理解后缀规则、缺省规则和Makefile的其他特性,开发者能够编写出高效、灵活的构建脚本,以自动化复杂的软件构建流程。