GNU makefile中文教程详解
需积分: 10 143 浏览量
更新于2024-07-24
1
收藏 1.91MB PDF 举报
"GNU+makefile中文手册,ver-3.8,由徐海兵翻译整理,涵盖了关于GNU make的全面介绍,包括Makefile的基本概念、规则、变量使用、自动推导规则、目录搜索等内容。"
GNU Makefile是构建自动化工具,它允许程序员通过编写Makefile来自动化编译、链接等构建过程。手册详细介绍了以下知识点:
1. **概述**:
- Makefile是用于管理项目构建的文件,包含了构建过程中各种目标文件的依赖关系以及构建这些目标的命令。
- GNU make是流行的Make工具之一,支持更复杂的Makefile语法和功能。
2. **准备知识**:
- 在使用GNU make之前,需要了解基本的shell命令和编译原理。
3. **GNU make介绍**:
- **Makefile简介**:Makefile包含目标(如可执行文件)、依赖项(如源代码文件)和构建目标所需的命令。
- **规则介绍**:规则定义了目标和依赖,以及如何从依赖构建目标的命令。
- **简单示例**:通常包括目标、依赖和命令,如`target: dependency1 dependency2; command`。
- **make如何工作**:make根据Makefile中的规则检查目标是否需要更新,并执行相应的命令。
- **指定变量**:使用变量可以简化Makefile,减少重复,如`CC=gcc`指定C编译器。
- **自动推导规则**:GNU make可以自动推导某些类型的依赖关系,例如从.c文件生成.o文件的编译过程。
- **另类风格的makefile**:Makefile的写法可以有多种,但应保持可读性和一致性。
4. **Makefile总述**:
- **Makefile内容**:包括目标、依赖、命令、变量等。
- **命名**:Makefile可以命名为任意名字,但通常使用`Makefile`或`makefile`。
- **包含其他makefile**:使用`include`指令引入其他Makefile文件。
- **特殊变量**:如`MAKEFILES`和`MAKEFILE_LIST`记录了make使用的Makefile列表。
- **文件重建**:make可以自动生成Makefile的依赖关系,以便于追踪文件更改。
5. **Makefile的规则**:
- **规则语法**:规则定义了目标、依赖和命令的结构。
- **依赖类型**:可以是文件依赖,也可以是其他规则。
- **通配符**:`*`用于匹配任何字符序列,但可能导致不期望的行为。
- **函数wildcard**:用于获取当前目录下匹配通配符的文件列表。
- **目录搜索**:通过`VPATH`和`vpath`关键字控制源文件的搜索路径。
- **伪目标**:如`.PHONY`,确保目标总是被重新构建。
- **强制目标**:无命令或依赖的规则,用于指示make进行特定操作。
- **空目标文件**:用于标记构建过程中的中间状态。
- **特殊目标**:如`.SILENT`、`.SECONDARY`等,控制make的行为。
- **多目标**:一个规则可以有多个目标,共享相同的依赖和命令。
- **静态模式规则**:更灵活的规则形式,允许指定模式依赖和命令。
手册还深入探讨了静态模式规则的语法和用法,以及它们与隐含规则的关系,提供了一整套构建自动化的方法论,对于理解和编写高效Makefile非常有价值。
127 浏览量
106 浏览量
352 浏览量
214 浏览量
102 浏览量
1196 浏览量
124 浏览量
246 浏览量
_剪烛西窗_
- 粉丝: 13
- 资源: 6
最新资源
- 易语言-扫码枪数据获取 收银插件收银系统必备
- kawix:面向Node.js并为其编写的下一代Javascript运行时
- e-olymp.com
- Hover-Poll-Css
- Unity Shaders and Effects Cookbook eBook及实例代码
- java8xtend:使用 Java 8 的 Xtend 示例
- ML-From-Scratch:进行中
- LOAD CELL-new_loadcell_cell_vehicledynamics_proteus_vehicle_
- django-ordered-model:依次获取Django模型
- ketchup:Starthack项目
- grget:简单的在线制作
- 关于车辆横摆稳定性控制方法和装置的介绍说明.rar
- content-renderer:content-renderer是用于将结构化数据呈现为HTML的库
- 易语言-注册表格式转易语言代码工具
- Bombus:一个SwiftUI pomodoro应用程序
- fgpa-apgf:FGP查看器的创作工具