GNUMAKE中文手册:规则与命令详解
需积分: 50 102 浏览量
更新于2024-08-06
收藏 860KB PDF 举报
"该资源主要介绍了`makefile`的相关知识,包括规则的示例和语法,以及`makefile`的各个重要概念,如目标、依赖、命令、变量使用、条件判断和函数等。此外,还涉及到`make`的运行机制、隐含规则的使用和函数库文件的更新。"
在`makefile`中,规则是用来描述如何从依赖文件生成目标文件的指令。例如,`foo.o : foo.c defs.h`这条规则表示`foo.o`目标文件依赖于`foo.c`和`defs.h`两个源文件。当`foo.c`或`defs.h`更新后,`foo.o`就需要重新编译。命令`cc -c -g foo.c`说明了编译过程,它会生成带调试信息的`foo.o`。
规则的语法一般形式为:`targets : prerequisites \n command \n ...`,其中`targets`是需要生成的目标,`prerequisites`是生成这些目标所依赖的文件,`command`是用于生成或更新目标的命令。多个命令之间可以用`\n`分隔。
`make`的工作原理是检查目标文件与依赖文件的修改时间,如果目标文件较旧或者不存在,`make`就会根据规则执行相应的命令来更新目标。
在`makefile`中使用变量可以提高可读性和复用性。变量可以存储命令、路径、文件名等,通过`$(variable)`来引用。`make`还可以自动推导某些依赖关系,如源文件和编译后的对象文件之间的关系。
`makefile`支持多种风格,包括使用通配符`*`匹配多个文件,文件搜索路径,伪目标(如`.PHONY`用于确保目标总是被更新),多目标在一个规则下处理,静态模式规则用于批量处理相似的目标,以及自动生成依赖性以减少手动维护。
书写命令时,可以控制其显示、执行和错误处理。`make`支持嵌套调用和其他复杂的命令构造。`override`指示符用于覆盖外部环境中的变量值,多行变量允许在变量定义中换行,环境变量可以传递到`make`中,目标变量和模式变量则提供了更灵活的变量使用方式。
条件判断允许`makefile`根据特定条件执行不同代码块,函数支持字符串和文件名操作,以及逻辑判断等功能。`make`的运行包括指定Makefile、目标、参数等,还可以检查规则并处理退出码。
隐含规则是`make`内置的一系列模板,它们定义了常见的构建过程,如编译C程序。用户可以通过定义模式规则或后缀规则来扩展或覆盖这些隐含规则,以满足自定义的构建需求。函数库文件的更新涉及成员管理和更新机制,确保正确地链接和更新库文件。
`makefile`是构建自动化工具的核心,它通过规则和变量管理编译过程,利用隐含规则简化配置,通过条件判断和函数增强表达能力,从而实现高效且灵活的项目构建。
1026 浏览量
451 浏览量
1873 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
126 浏览量
张诚01
- 粉丝: 33
- 资源: 3906
最新资源
- jquery开关按钮基于Bootstrap开关按钮特效
- merkle-react-client:客户
- 财务管理系统javaweb项目
- DOM-Parsing:DOM解析和序列化
- FastReport v6.7.11 Enterprise installer .zip
- pid控制器代码matlab-AutomatedBalancingRobot:自动平衡机器人是一个项目,其中建造了一个两轮机器人,并将其编程为
- 基于MATLAB模型设计的FPGA开发与实现.zip_UBK_matlab与fpga_simulink模型_struck9hw_
- ubiq:基于HugSQL和GraphQL的Web应用程序,移动部分最少
- 行业文档-设计装置-一种折叠式防滑书立.zip
- 意法半导体参考文献及软件资料.7z
- LoRa-High-Altitude-Balloon:这是蒙大拿州立大学LoRa小组顶峰项目的存储库,该项目是蒙大纳州太空资助财团BOREALIS实验室的项目。 以下代码在定制板上运行,该定制板上旨在收集高空气球有效载荷上的大气数据
- BW_Anal-开源
- nuaa_check_action:inuaa打卡,基于GitHub Action的南航校内,校外打卡
- alex_presso
- perf:PERF是详尽的重复查找器
- 行业文档-设计装置-一种折叠式包装纸箱.zip