GNU make中文手册:多行定义与数值模拟
需积分: 50 86 浏览量
更新于2024-08-08
收藏 1.24MB PDF 举报
"这篇文档是GNU Make中文手册的一部分,主要讲解了`define`指令在`cfd数值模拟原理`中的应用以及`GNU Make`的基本概念和规则。"
在`GNU Make`中,`define`指令用于定义多行的变量,这对于创建复杂的命令包或者宏非常有用。通常,`define`定义的变量可以包含多个命令,这些命令可以作为`eval`函数的参数执行。`define`的语法结构如下:
```makefile
define variable_name
# 多行内容
command1
command2
...
endef
```
在这个结构中,`variable_name`是要定义的变量名,`define`和`endef`之间的所有内容都是变量的值,可以是一系列的命令或者表达式。例如,定义一个名为`two-lines`的变量:
```makefile
define two-lines
echo foo
echo $(bar)
endef
```
当这个变量作为命令包执行时,它等价于直接运行这两个命令。`$(bar)`是变量引用,会在执行时被替换为其对应的值。
`GNU Make`是构建自动化工具,主要用于编译程序或其他需要执行一系列有序任务的场合。手册中还涵盖了Makefile的诸多方面,包括:
1. **Makefile的基本结构**:Makefile由规则组成,每个规则定义了目标文件及其依赖文件,并指定了生成目标文件所需的命令。
2. **变量的使用**:`GNU Make`支持用户定义变量,可以通过`=`、`:=`或`+=`等方式赋值,还有预定义的自动变量如`$@`表示目标文件,`$<`表示第一个依赖文件等。
3. **规则**:规则描述了如何从依赖文件生成目标文件,包含目标、依赖和命令。命令通常以制表符开头,且可以使用`\`进行行续接。
4. **通配符和目录搜索**:`make`可以使用`*`、`?`等通配符匹配文件名,通过`VPATH`变量或`vpath`指令进行目录搜索,寻找依赖文件。
5. **隐含规则和自动变量**:`make`内置了一些隐含规则,可以自动推断编译和链接的目标,同时自动变量能简化规则的编写。
6. **伪目标和特殊目标**:如`.PHONY`用于标记不实际存在的目标,`.SILENT`可以禁用命令打印,`.PRECIOUS`则防止中间目标被删除。
7. **条件语句**:`ifeq`, `ifneq`, `ifdef`, `ifndef`等条件控制结构允许根据变量值进行条件化处理。
8. **函数和操作**:`make`提供了一系列内置函数,如`$(wildcard)`用于获取匹配通配符的文件列表,`$(patsubst)`用于字符串替换等。
`GNU Make`通过读取Makefile文件,解析其中的规则和变量,根据依赖关系决定哪些文件需要更新,并执行相应的命令。理解并熟练掌握`define`等高级特性,有助于编写更高效、灵活的Makefile,优化软件构建过程。
2011-05-10 上传
2021-09-19 上传
2024-05-04 上传
2024-10-27 上传
2024-10-27 上传
2024-10-25 上传
2024-10-25 上传
2023-06-15 上传
MICDEL
- 粉丝: 36
- 资源: 3948
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析