杂记连载之Makefile

有了自己的团队,为了大家能够有所进步,我规划了一些团队建设的内容,其中一项是杂记连载内容,把我平时积累的杂记内容整理出来分享给大家。以下内容是第一篇的完整内容。

看到大家这两天都在学习makefile,今天给大家分享一些make命令及makefile相关的内容。

①  Makefile定义一系列的规则来指定,文件编译的依赖关系,哪些文件需要重新编译。

make工具通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。makefile文件保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(源代码文件需要的特定的包含文件,可执行文件要求包含的目标文件模块及库等)

②  makefile使用%通配

%.o:CFLAGS=-O搜寻所有匹配格式%.o的目标,将它的变量CFLAGS设置为-O

makefile中在执行命令时会先将命令显示出来,然后执行,makefile中在命令前加@即不打印当前命令,直接执行,使用make -s则将所有的命令显示屏蔽。

make命令时make[1] make[2] 数字应该是指一级、二级子目录

使用#注释行,用反斜框进行转义,如:\#

在Makefile中的命令,必须要以[Tab]键开始

默认的情况下,make命令在当前目录下按顺序找寻文件名为"GNUmakefile"、"makefile"、"Makefile"的文件。使用其他文件名,make命令加参数-f或-file

使用include<filename>包含其他makefile,filename可包含路径和通配符。include前不能使用tab键。

使用反斜杠(\)进行换行。

make时有大量的错误信息,屏幕显示不完全,只能看见最后一部分,使用make >error.txt 这样也没办法显示。使用make2> error.txt 就可以将错误信息重定向到文件了。注意:2和>一定要写在一起!

Makefile中的vpath&VPATH可扩展对编译目标所依赖文件的搜索路径。

③  Makefile中的自动变量:

$?  列出当前目标所依赖的文件列表中比当前文件还要新的文件

$@  当前目标的名字

$<  当前依赖文件的名字

$*  不包括后缀名的当前依赖文件的名字

$^  当前规则的整个依赖列表

.PHONY,使make不用檢查目標文件是否存在于磁碟上,也不用查找任何隐含规则,直接假设指定的目的需要被更新(產生目標的命令總會被執行)

.PHONY : clean

  clean :

  rm *.o

④  下面简单介绍使用configure生成makefile.大家在阅读模块设计文档时会遇到这种

生成makefile的方式,大家可以对应当前的模块设计文档进行实验。更多configure的所使用的参数信息可使用”.configure –help”.

Makefile是通过configure文件自动生成的,而Makefile.am和Makefile.in都是生成Makefile必须的文件

其中Makefile.am是要自己来写的,根据automake工具的语法

akefile.in是在automake的时候生成的

automake -Generate Makefile.in for configure from Makefile.am.

⑤  更多的make选项,大家可”man make” 或”make --help”了解,关于Makefile中的

内置函数,大家可查阅资料。

 以上内容是我早期的杂记中整理出来的。之后会陆续的将对大家有帮助的内容整出来分享给大家,杂记的内容很琐碎,所以整理出的内容可能不是针对某一具体知识的汇总。希望这些内容会对大家有所帮助,也希望大家有好的想法或经验能够共同分享。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值