四、makefile中的依赖关系
make程序自动生成和维护通常是可执行模块或应用程序的目标,目标的状态取决于它所依赖的那些模块的状态。Make的思想是为每一块模块都设置一个时间标记,然后根据时间标记和依赖关系来决定哪一些文件需要更新。一旦依赖模块的状态改变了,make就会根据时间标记的新旧执行预先定义的一组命令来生成新的目标。
依赖关系规定了最终得到的应用程序跟生成它的各个源文件之间的关系。如下面的图1描述了可执行文件main对所有的源程序文件及其编译产生的目标文件之间的依赖关系,见下图:
图1 模块间的依赖关系
就图1而言,我们可以说可执行程序main依赖于main.o、f1.o和ff1.o。与此同时,main.o依赖于main.c和def1.h;f1.o依赖于f1.c、def1.h和def2.h;而ff1.o则依赖于ff1.c、def2.h和def3. h。在makefile中,我们可以用目标名称,加冒号,后跟空格键或tab键,再加上由空格键或tab键分隔的一组用于生产目标模块的文件来描述模块之间的依赖关系。对于上例来说,可以作以下描述:
main: main.o f1.o f2.o main.o: main.c def1.h f1.o: f1.c def1.h def2.h f2.o: f2.c def2.h def3.h |
不难发现,上面的各个源文件跟各模块之间的关系具有一个明显的层次结构,如果def2.h发生了变化,那么就需要更新f1.o和f2.o,而f1.o和f2.o发生了变化的话,那么main也需要随之重新构建。
默认时,make程序只更新makefile中的第一个目标,如果希望更新多个目标文件的话,可以使用一个特殊的目标all,假如我们想在一个makefile中更新main和hello这两个程序文件的话,可以加入下列语句达到这个目的:
all: main hello |
相关视频
相关阅读 Linux下Makefile的automake生成全攻略国产RPGMaker游戏《风之幻想曲》登录Steam平台makeapp怎么用 makeapp怎么一键卸妆一键卸妆app叫什么 可以一键卸妆的App是什么软件rpgmaker游戏常见问题及解决方法 rpgmaker游戏出问题怎么办cia游戏转cci格式图文教程 makerom使用教程苹果一键制作U盘启动盘教程_DiskMaker软件使用教程DiskMaker X制作Yosemite安装U盘教程
热门文章 Cygwin安装教程(图文)CentOS安装教程(CentOLinux系统安装Vmware图
最新文章
Linux测试网速命令是什Cygwin安装教程(图文)
CentOS安装教程(CentOS 6.4图文安装)Linux系统安装Vmware图文教程Stingray Traffic Manager配置教程ubuntu u盘安装图解
人气排行 Linux系统安装Vmware图文教程Cygwin安装教程(图文)命令行Makefile和make命令讲解教程关于linux vim命令 总结CentOS安装教程(CentOS 6.4图文安装)用vnc实现windows远程连接linux桌面 vnc安装Linux系统下应用软件安装教程教你手工卸载ubuntu下的vmware系列软件
查看所有1条评论>>