书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。...
分类:
系统相关 时间:
2014-07-18 16:18:41
阅读次数:
323
使用变量————在 Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使 用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“...
分类:
系统相关 时间:
2014-07-18 16:16:24
阅读次数:
292
隐含规则————在 我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o] 文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则...
分类:
系统相关 时间:
2014-07-18 16:14:56
阅读次数:
341
后序——终 于到写结束语的时候了,以上基本上就是GNU make的Makefile的所有细节了。其它的产商的make基本上也就是这样的,无论什么样的make,都是以文件的依赖性为基础的,其基本是都是遵 循一个标准的。这篇文档中80%的技术细节都适用于任何的make,我猜测"函数"那一章的内容可能不是...
分类:
系统相关 时间:
2014-07-18 16:13:25
阅读次数:
256
序言: 前面的课程讲解了从gcc编译过程到其实践,大家可以看到其实在这些步骤中有些是可以简化编译的,但由于参数多以及项目中文件数量多的原因难免会造成错误甚至是浪费大量的时间在这编译上,为此linux系统中专门也有这个工具:makefile。原理: 其实本质Makefile文件(通常开头是大写M).....
分类:
其他好文 时间:
2014-07-18 15:24:57
阅读次数:
159
使用条件判断——————使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。一、示例下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。libs_for_gcc = -lgnunormal_libs...
分类:
系统相关 时间:
2014-07-18 09:33:18
阅读次数:
271
使用make更新函数库文件———————————函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。一、函数库文件的成员一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成:archive(member)这个不是一个命...
分类:
系统相关 时间:
2014-07-18 09:28:54
阅读次数:
252
使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:$( )或是....
分类:
系统相关 时间:
2014-07-18 09:28:11
阅读次数:
347
书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但...
分类:
系统相关 时间:
2014-07-18 09:26:51
阅读次数:
373
make 的运行——————一 般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让 make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如...
分类:
系统相关 时间:
2014-07-18 09:24:35
阅读次数:
502