Makefile 自动推导依赖性
需积分: 50 195 浏览量
更新于2024-08-07
收藏 632KB PDF 举报
"《跟我一起写Makefile》(PDF重制版)由陈皓编写,主要介绍了Makefile的编写和使用方法,包括自动化依赖性生成等关键知识点。"
在编程领域,尤其是C++项目中,Makefile是一个非常重要的工具,它帮助开发者自动化编译过程,确保代码的正确构建。【标题】中的“自动生成依赖性”是Makefile的一个高级特性,尤其对于大型项目,能够有效地管理源文件与头文件之间的依赖关系。【描述】中提到的,当我们在C源文件中包含头文件(如`#include "defs.h"`)时,Makefile应该反映出这种依赖关系,以便于编译时自动检查和更新。
2.5章节中提到的“让make自动推导”,这是指Make可以自动检测源文件和目标文件之间的依赖关系,例如,通常情况下,`.c`文件会被编译成`.o`的目标文件,Make可以自动推导出这个规则。然而,对于头文件的依赖,Make不会自动识别,这就是3.8章节“自动生成依赖性”的重点。
在Makefile中,我们可以通过`gcc -M`或`gcc -MM`命令来生成依赖性信息。这些命令会分析源文件并输出一个包含所有依赖的头文件的列表。例如,如果我们有`main.c`,可以这样添加到Makefile:
```make
DEPS = defs.h
CC = gcc
CFLAGS = -MMD -MP
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
-include $(wildcard *.d)
```
在这个例子中,`-MMD`选项告诉GCC生成`.d`文件,其中包含了依赖的头文件信息,`-MP`则确保即使头文件不存在,Make也不会报错。`-include $(wildcard *.d)`会包含所有生成的`.d`文件,这样Make就会知道如何处理头文件的改变。
3.8章节还会详细讲解如何在Makefile中处理这些自动生成的依赖关系,以及如何在编译过程中有效地利用它们,确保每次修改头文件后,相关的源文件都会被重新编译。
此外,书中还涵盖了Makefile的其他重要概念,如:
- 2.1至2.12章节,解释了Makefile的基本结构、规则、变量、工作原理以及引用其他Makefile的方式。
- 3.x章节详细阐述了书写规则的各种细节,如规则的语法、通配符的使用、文件搜索、伪目标、多目标、静态模式等。
- 4.x章节讲解了如何书写命令,包括显示命令、命令执行、错误处理、嵌套make和命令包裹。
- 5.x章节深入探讨了变量的使用,包括基础、高级用法、追加值、覆盖和多行变量等。
- 6.x章节介绍了条件判断,这对于根据不同的条件执行不同的构建步骤非常有用。
- 7.x章节则介绍了各种内置函数,用于字符串和文件名操作,增强Makefile的灵活性。
《跟我一起写Makefile》是一本深入学习Makefile的优秀教程,对理解Makefile的工作原理和编写高效Makefile至关重要。通过学习书中的内容,开发者可以更好地管理和自动化他们的C++项目,提高开发效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
176 浏览量
2018-07-01 上传
293 浏览量
锋锋老师
- 粉丝: 26
- 资源: 3838
最新资源
- coloresCode:接口minimastista para可视化和修改颜色y copiar supectivocódigohtml
- 人工智能导论课程大作业.zip
- 用于Laravel和Lumen框架的RESTful API软件包。-PHP开发
- arificial-immune.rar_
- soal-shift-sisop-modul-1-A02-2021
- Ipewa-v2:最终开发者协理会,综合平台高级协理会
- TISOLib-开源
- code-samples
- 纸秘书
- marionette-form-view-demo:我为Marionette编写的FormView类的演示
- 人工智能系统推理库ADC.zip
- el-plugins
- 2.rar_图形图像处理_Visual_C++_
- giffygram:基于组件的VanillaJS应用程序供NSS学生构建
- ProTrack:作为软件配置管理课程一部分的项目管理应用程序
- Android_Demo:Study_Android