我所认识的GNU make(6) -- 如何生成Makefile文件

今天谈谈如何让系统自己生成Makefile文件。

首先是为什么要让系统生成Makefile,而不是开发者直接编辑Makefile,这主要是因为Makefile的移植性天生就不行,因为Makefile会包含一些和平台相关的信息,当前系统的Makefile文件并不一定能够适应于其他系统。所以就需要让系统根据一定的配置文件生成每个系统自己的Makefile,这样一套源代码拿到另外的系统上也可以顺利地编译出想要的程序。

那么Makefile是如何生成的呢?Makefile是由imake这个工具生成的,为了能够让imake程序生成Makefile则需要两样东西,一个就是Imakefile,另外一个就是configuration file(配置文件)。其中Imakefile一般包含的是跟当前平台环境无关的信息,而且非常简洁,其实基本就是指明一些想要生成的目标,编译的选项和搜寻的目录,这样Imakefile就没有移植性的问题了。而configuration file则包含的是当前平台环境的一些具体信息,每个系统只需要一个配置文件就可以。我见到的配置文件是以.rules的文件存在的,不知道是否有其他的文件格式存在。这样就可以调用imake程序去读取Imakefile和configuration file,结合两者的信息生成相应的Makefile。当Makefile生成之后其实如果详细看的话,会发现里面有个特殊的规则,它的目标就是Makefile,所以如果当前的文件目录已经存在自动生成的Makefile时,如果Imakefile有变动,那么其实可以在当前目录执行make Makefile这条指令,将Makefile自身更新。

另外需要注意的是,在工程实践中,一般比较少直接调用imake程序去生成Makefile,而是执行一个bootstrapper(引导程序),这个bootstrapper去调用imake程序生成Makefile的,为什么要这么做现在还不是很清楚(有人解释一下的话就非常感谢了)。所以第一次生成Makefile的时候需要执行bootstrapper,之后如果在没有删除Makefile的情况下就则可以通过1)执行bootstrapper或者2)make Makefile命令,这两种方式来更新Makefile。常见的bootstrapper有xmkmf和imboot。

Makefile的生成只是大概了解了一些过程,还没有详细地研究,其实也有一部分原因是找到的资料比较少,如果有哪位高人能指点一下真的是非常感谢。


写这个是本着大家一起学习探讨的目的,阅过的请留下您的宝贵意见,我会及时回复。

--The Magic That Brings Hardware To Life.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值