GNU Make 使用手册详解:规则、变量和Makefile 编写
4星 · 超过85%的资源 需积分: 36 179 浏览量
更新于2024-07-27
收藏 1.34MB PDF 举报
GNU Make 中文版
GNU Make 是一个自由和开源的自动化构建工具,广泛应用于软件开发、编译和安装过程中。GNU Make 的中文版手册提供了详细的使用指南、规则介绍、常见错误信息等内容。
1. 概述
GNU Make 是一个Makefile解析器,它可以根据Makefile中的规则来自动构建、编译和安装软件。Makefile是一个文本文件,包含了构建项目所需的规则和依赖关系。
2. GNU Make 介绍
GNU Make 是一个功能强大且灵活的自动化构建工具,广泛应用于软件开发、编译和安装过程中。Makefile是GNU Make的核心,它定义了构建项目所需的规则和依赖关系。
2.1 Makefile 简介
Makefile是一个文本文件,包含了构建项目所需的规则和依赖关系。Makefile中的规则定义了如何构建项目,包括编译、链接和安装等过程。
2.2 Makefile 规则介绍
Makefile规则是GNU Make的核心,它定义了如何构建项目。Makefile规则包括目标、依赖关系和命令三部分。目标是构建的结果,依赖关系是目标所需的文件或条件,命令是执行构建的命令。
2.3 简单的示例
下面是一个简单的Makefile示例:
```
hello: hello.o
cc -o hello hello.o
```
这个示例中,目标是hello,依赖关系是hello.o,命令是cc -o hello hello.o。
3. Makefile 总述
Makefile是GNU Make的核心,它定义了构建项目所需的规则和依赖关系。Makefile包括了多个部分,例如变量、规则、目标和依赖关系等。
3.1 Makefile 的内容
Makefile的内容包括变量、规则、目标和依赖关系等。变量是Makefile中的一个值,规则是Makefile中的一个定义,目标是构建的结果,依赖关系是目标所需的文件或条件。
3.2 Makefile 文件的命名
Makefile文件的命名通常是Makefile或makefile。GNU Make会自动查找名为Makefile或makefile的文件。
3.3 包含其它Makefile文件
Makefile可以包含其它Makefile文件,使用include指令可以将其它Makefile文件包含到当前Makefile文件中。
4. Makefile 规则
Makefile规则是GNU Make的核心,它定义了如何构建项目。Makefile规则包括目标、依赖关系和命令三部分。
4.1 一个例子
下面是一个简单的Makefile规则示例:
```
hello: hello.o
cc -o hello hello.o
```
这个示例中,目标是hello,依赖关系是hello.o,命令是cc -o hello hello.o。
4.2 规则语法
Makefile规则的语法如下:
```
target: dependencies
command
```
target是目标,dependencies是依赖关系,command是命令。
4.3 依赖的类型
Makefile规则的依赖关系可以是文件、目录或变量。
4.4 文件名使用通配符
Makefile规则可以使用通配符来匹配文件名。例如:
```
*.o: *.c
cc -c $<
```
这个示例中,*.o是目标,*.c是依赖关系,cc -c $<是命令。
4.5 目录搜寻
Makefile规则可以使用目录搜寻来查找依赖关系。例如:
```
VPATH = src
```
这个示例中,VPATH是变量,src是目录。
4.6 Makefile 伪目标
Makefile伪目标是一个特殊的目标,它不生成实际文件,而是用于执行某些命令。例如:
```
clean:
rm *.o
```
这个示例中,clean是伪目标,rm *.o是命令。
4.7 强制目标
强制目标是一个特殊的目标,它强制执行命令,而不管依赖关系是否存在。例如:
```
hello: hello.o
cc -o hello hello.o
rm hello.o
```
这个示例中,hello是目标,hello.o是依赖关系,cc -o hello hello.o是命令,rm hello.o是强制命令。
4.8 空目标文件
空目标文件是一个特殊的目标,它不生成实际文件,而是用于执行某些命令。例如:
```
empty:
touch empty
```
这个示例中,empty是目标,touch empty是命令。
4.9 Makefile 的特殊目标
Makefile的特殊目标是一个特殊的目标,它用于执行某些命令。例如:
```
all:
$(MAKE) hello
```
这个示例中,all是目标,$(MAKE) hello是命令。
4.10 多目标
Makefile可以定义多个目标。例如:
```
hello: hello.o
cc -o hello hello.o
world: world.o
cc -o world world.o
```
这个示例中,hello和world是两个目标。
4.11 多规则目标
Makefile可以定义多个规则目标。例如:
```
hello: hello.o
cc -o hello hello.o
hello: hello.o
cc -o hello hello.o
```
这个示例中,hello是两个规则目标。
4.12 静态模式
静态模式是一个特殊的Makefile规则,它可以生成多个目标。例如:
```
%.o: %.c
cc -c $<
```
这个示例中,%.o是目标,%.c是依赖关系,cc -c $<是命令。
GNU Make 是一个功能强大且灵活的自动化构建工具,广泛应用于软件开发、编译和安装过程中。Makefile是GNU Make的核心,它定义了构建项目所需的规则和依赖关系。
2021-09-29 上传
2012-11-30 上传
2018-06-29 上传
2013-08-06 上传
2021-06-30 上传
2009-11-18 上传
2012-01-17 上传
2021-03-10 上传
ImportantPerson
- 粉丝: 3
- 资源: 12
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器