GNU make 3.8:重载makefile解决目标冲突问题
需积分: 4 199 浏览量
更新于2024-08-09
收藏 978KB PDF 举报
"这篇文档是关于GNU make的中文手册,主要介绍了如何在多个makefile之间进行协同工作,特别是如何在不冲突的情况下重载另一个makefile。文档由徐海兵于2004年9月11日翻译整理,涵盖了makefile的基本概念、规则以及高级特性。"
在编写复杂的构建系统时,经常需要处理多个makefile,以便管理和组织不同的构建任务。标题提到的“重载另外一个makefile”是指在一个makefile(makefile-A)中调用和利用另一个makefile(makefile-B)中的规则和变量,但又避免因目标文件有相同的规则定义而引发的冲突。GNU make提供了一种解决方法,使得makefile-A可以使用makefile-B的内容,而不直接包含它。
通常,我们会使用`include`指令来包含另一个makefile,但这会导致如果有相同目标的规则,就会产生冲突。在这种情况下,我们可以使用一种特殊的方法来重载makefile-B,即通过设置特定的变量和规则,使得makefile-A在需要时调用makefile-B的规则,但不会覆盖已有的规则。
例如,可以在makefile-A中定义一个目标,该目标的规则是运行makefile-B的规则。这可以通过执行`$(MAKE) -f makefile-B`来实现。这样,makefile-A中的目标会调用makefile-B的规则,而不会与makefile-A自身的规则发生冲突。这种技术允许在多个makefile之间共享规则和变量,同时保持每个makefile的独立性。
此外,文档还提到了一些其他重要的makefile概念,如:
1. **Makefile的内容**:包括目标、依赖项和命令,以及变量的定义和使用。
2. **Makefile的规则**:描述了如何从依赖项构建目标,包括普通规则、静态模式规则、伪目标等。
3. **通配符和目录搜索**:如何使用`*`等通配符匹配文件名,以及如何通过`VPATH`和`vpath`设置搜索路径来找到源文件。
4. **变量和自动变量**:变量用于存储值,自动变量如 `$@` 表示目标,`$<` 表示第一个依赖项。
5. **条件语句**:允许根据变量的值来有条件地执行规则或设置变量。
6. **Makefile的解析和执行**:make是如何读取、解析makefile并决定哪些目标需要更新的过程。
了解这些概念和技术,可以帮助开发者更有效地编写和管理复杂的构建脚本,确保构建过程的顺利进行。
2018-08-31 上传
2021-06-08 上传
2023-08-03 上传
2023-08-05 上传
2023-06-09 上传
2023-06-09 上传
2023-09-15 上传
2023-07-27 上传
2023-06-14 上传
![](https://profile-avatar.csdnimg.cn/afb03d917ad24b6a999d412292bf1bc3_weixin_26774169.jpg!1)
Sylviazn
- 粉丝: 29
- 资源: 3955
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命