makefile笔记

makefile笔记

ID:39465974

大小:52.50 KB

页数:7页

时间:2019-07-04

makefile笔记_第1页
makefile笔记_第2页
makefile笔记_第3页
makefile笔记_第4页
makefile笔记_第5页
资源描述:

《makefile笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、什么是make?  当你写一个简单的程序,只有一到两个源文件的时候,输入  %ccfile1.cfile2.c  就没什么问题,但如果有很多源文件就会很烦人──编译的时间也会很长。  一个方法就是使用目标文件,只在源文件有改变的情况下才重新编译源文件。因此你可以这样做:  %ccfile1.ofile2.o...file37.c...  上次编译后,file37.c发生了改变,但其他文件没有。这样做可以让编译过程快很多,但是也不能解决累人的输入问题。  或者我们可以使用一个shellscript来解决输入问题,但是也需要重新编

2、译所有文件,在大型项目上很没有效率。  如果有成百上千的源文件的话怎么办?如果我们在与很多人合作写程序,别人对源文件进行了修改,又没有告诉你,该怎么办?  也许我们可以把以上两种方法结合,写一种像shellscript一样的东西。这种文件包含某种技巧可以决定什么时候该对源文件进行编译。现在所有我们要的就是一个程序可以懂得这种技巧,因为要懂得这种技巧,shell还没那么大的能耐。  这个程序就叫make。它读入一个文件,叫makefile,这个文件决定了源文件之间的依赖关系。而且决定了源文件什么时候该编译什么时候不应该编译。例如

3、,某个规则可以说“如果fromboz.o比fromboz.c要旧,意思就是有人修改了fromboz.c,因此我们需要重新编译这个文件。”这个makefile还有规则通知make该怎么重新编译源文件,因此make是一个强大得多的工具。  makefile通常和相关的源文件保存在同一个目录下,可以叫做makefile,Makefile或者MAKEFILE。大多数程序员会使用Makefile这个名字,因为这样可以让这个文件被放在目录列表的顶端,可以很容易得看见。  使用make的例子  这是一个非常简单的make文件:  foo:f

4、oo.c  cc-ofoofoo.c  包含两行,一行是依赖关系,一行是执行动作。  依赖关系的那一行包含了程序的名字(叫做target),紧跟着一个冒号,然后是空格,最后是源文件的名字。当make读入这一行的时候,会检查foo是否存在;如果存在,就比较foo和foo.c最后的修改时间有什么不同。如果foo不存在,或者比foo.c要旧,就检查执行动作那一行看看该怎么做。换句话说,就是foo.c需要重新编译的时候该怎么办。  执行动作那一行以一个tab(按下tab)开始,然后是你在命令行下产生foo所执行的命令。如果foo过期了

5、,或者不存在,make就会执行这个命令来产生foo。换句话说,这就是重新编译foo.c的规则。  因此,当你输入make时,它会确定foo和foo.c在修改时间上是否同步。这个原则可以在Makefile里扩展到成百上千的目标文件上──实际上,在FreeBSD里,你只要在合适的目录下输入makeworld就可以编译整个操作系统!  makefile另一个有用的特点就是目标文件不一定就是程序。例如,我们可以有这样的make文件。  foo:foo.c  cc-ofoofoo.c  install:  cpfoo/home/me  

6、我们可以输入如下的命令告诉make该执行哪个目标:  %maketarget  make会只执行这个目标而忽略其他的目标。例如,如果我们输入makefoo,就只有foo被执行,必要的情况下重新编译foo而不会继续执行install这个目标。  如果我们只是输入make这个命令,make总会寻找第一个目标,并且在执行完以后就不管其他的目标了。例如,如果我们输入makefoo,make就会转到foo这个目标,在必要的情况下重新编译foo,而不会执行install目标,然后就停止了。  一定要注意,install这个目标不依赖任何其

7、他的东西!这意味着我们一旦输入makeinstall,这个目标下的所有命令都将被执行。这种情况下,foo将被安装到用户的家目录下。应用程序的makefile正是这样写的,以便程序在正确编译后可以被安装到正确的目录。  要尝试解释的话会比较容易让人混淆。如果你不太懂make是如何工作的,最好的办法就是先写一个简单的程序例如“helloworld”以及和上面的例子相同的make文件再去实验。然后再进一步,使用多个源文件,或者让你的源文件包含一个头文件。touch命令在这里就非常有用了──它能让在不改变文件内容的情况下改变文件的日期

8、。  Make和include-文件  C源码的开头经常有一系列被包含的头文件,例如stdio.h。有一些是系统级的头文件,有一些是你正在写的项目的头文件:  #include  #include"foo.h"  intmain(....  要确定在你的fo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。