中国公路建设在哪个网站公示,模板网文,网站建设价格评审资料清单,wordpress 问答 api文章目录 1. 总体认识2. 编写Makefile2.1. Makefile的组成2.2. Makefile文件名2.3. 包含其他Makefile 3. 编写规则4. 编写规则中的构建命令5. 如何使用变量6. 条件判断7. 转换文本的函数8. 如何运行make9. 使用模糊规则10. 使用make来更新存档文件11. 扩展GNU make12. 集成GNU … 文章目录 1. 总体认识2. 编写Makefile2.1. Makefile的组成2.2. Makefile文件名2.3. 包含其他Makefile 3. 编写规则4. 编写规则中的构建命令5. 如何使用变量6. 条件判断7. 转换文本的函数8. 如何运行make9. 使用模糊规则10. 使用make来更新存档文件11. 扩展GNU make12. 集成GNU make13. GNU make的特性14. 不兼容和缺少的特性15. makefile文件约定 1. 总体认识
GNU Make是一个命令工具用于控制从源文件生成可执行文件和其他非源文件。使用前需要进行安装以ubuntu为例sudo apt install makeMake从Makefile中了解如何构建程序该文件列出了每个非源文件及其构建方法因此需要编写Makefile以供make命令构建项目。GNU Make的具体用途 能够使用户在不知道如何完成的情况下构建和安装包。能够根据更改的源文件自动确定需要更新哪些文件。不限于任何特定的语言最常用于C/C项目的构建。对于程序中的每个非源文件Makefile指定用于构建它的shell命令。这些shell命令可以运行编译器来生成目标文件可以运行链接器来生成可执行文件可以更新库也可以运行TeX或Makeinfo来格式化文档。不限于构建包。还能控制软件包的安装或卸载为其生成标记表或者执行经常做的任何任务。 默认情况下make命令只执行完遇到的第一条规则包括递归执行生成先决条件的规则其他的规则不执行。要执行其他规则需要指定目标比如make clean。
2. 编写Makefile
2.1. Makefile的组成
Makefile包括明确的规则、模糊的规则、变量的定义、指令和注释。
明确的规则explicit rule规定何时以及如何构建目标其基本结构如下targets ... : prerequisites ...recipe # 注意Tab键开头...目标targets通常是生成的文件名也可以是要执行的操作名伪目标。先决条件prerequisites是构建命令需要输入的所有文件用空格隔开。构建方法recipe每行以Tab键开头内容是构建目标文件的shell命令。如果先决条件比目标更新或者目标不存在那么会重新构建目标。 模糊的规则implicit rule规定了何时以及如何基于文件名重新构建一类文件。比如源文件编译成目标文件main.o : defs.h不用写源文件名和编译命令。变量的定义variable definition指定了后续变量要替换的文本字符串值。指令directive用于读取Makefile时执行一些特殊的操作包括 读取另一个makefile文件基于变量的值决定使用还是忽略makefile的一部分定义多行变量用一个变量替换多行命令 注释comment #后面的内容忽略如果有反斜杠折行则会跨行注释使用#字符要转义\#不能在变量引用和函数调用中使用注释#号都会当字面量处理。构建命令中的注释会传递给shellshell决定如何处理。define指令中注释不会被忽略而是作为变量的值根据变量展开时的上下文被视为注释或构建命令文本。 使用反斜杠\可以将长行折成多行。使用$\可以去掉多余的空格。
2.2. Makefile文件名
默认情况下make会尝试查找以下文件名GNUmakefile、makefile和Makefile。推荐使用Makefile。如果make没找到默认文件名则需要通过命令参数-f或--file指定。如果使用多个-f或--file参数则可以指定多个生成文件。所有的制作文件都按照指定的顺序有效地连接起来。如果指定-f或--file参数默认文件名的makefile不会自动检查。
2.3. 包含其他Makefile
3. 编写规则
4. 编写规则中的构建命令
5. 如何使用变量
6. 条件判断
7. 转换文本的函数
8. 如何运行make
9. 使用模糊规则
10. 使用make来更新存档文件
11. 扩展GNU make
12. 集成GNU make
13. GNU make的特性
14. 不兼容和缺少的特性
15. makefile文件约定