![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
makefile学习
Orange Wu
哈~
展开
-
学习《跟我一起学makefile》使用make更新函数库文件
文章来自函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令 ar 来完成打包工作。1. 函数库文件的成员一个函数库文件由多个文件组成。你可以用如下格式指定函数库文件及其组成:archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了 ar 命令来服务的。如:foolib(hack.o) : hack.o ar cr foolib hack.o如果要指定多个member,那就以空格分开,如:f原创 2020-05-19 12:31:23 · 114 阅读 · 0 评论 -
学习《跟我一起学makefile》隐含规则
文章来源在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是 .o 文件,Windows下是 .obj 文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这样的规则。例如,把 .c 文件编译成 .o 文件这一规则,你根本就不用写出来,make会自动推导出这种规则,原创 2020-05-19 12:23:50 · 183 阅读 · 0 评论 -
学习《跟我一起学makefile》make 的运行
文章来源一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。1. make的退出码make命令执行后有三个退出码:0表示成功执行。1如果make运行时出现任何错误,其返回1。2如果你使用了make的“-q”选项,并且make使得一些目标不需要更新,那么原创 2020-05-19 10:59:22 · 313 阅读 · 0 评论 -
学习《跟我一起学makefile》使用函数
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make 所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。函数的调用语法函数调用,很像变量的使用,也是以 $ 来标识的,其语法如下:$(<function> <arguments>)或是:${<function> <arguments>}这里, <function> 就是函数名,make支持的函数不原创 2020-05-18 12:57:51 · 140 阅读 · 0 评论 -
学习《跟我一起学makefile》使用条件判断
文章来源使用条件判断使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值, 或是比较变量和常量的值。示例下面的例子,判断 $(CC) 变量是否 gcc ,如果是的话,则使用GNU函数编译目标。libs_for_gcc = -lgnunormal_libs =foo: $(objects)ifeq ($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc)else $(CC) -o fo原创 2020-05-15 12:01:16 · 136 阅读 · 0 评论 -
学习《跟我一起学makefile》使用变量
文章来源使用变量在Makefile 中的定义的变量,就像是 C/C++ 语言中的宏一样,他代表了一个文本字串,在Makefile 中 执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其 值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有 : 、 # 、 = 或是空字符(空格、回车等)。变量是大小写敏感的,“foo”、“F原创 2020-05-14 19:37:53 · 173 阅读 · 0 评论 -
学习《跟我一起学makefile》书写命令
书写命令每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的 开头必须以 Tab 键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是 空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被 /bin/sh ——UNIX的标准Shell 解释执行的。除非你特别指定一个其它的Shell。Makefile中, # 是注释符,很像C/C原创 2020-05-12 12:28:40 · 146 阅读 · 0 评论 -
学习《跟我一起学makefile》书写规则
转自书写规则规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这 个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标 可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么 ,第一个目标会成为最终的目标。make所完成的也就是这个目标。好了,还是让我们来看一看如何书写规则。规则举例foo.o:原创 2020-05-11 12:06:15 · 188 阅读 · 0 评论 -
学习《跟我一起学makefile》介绍
转自makefile介绍make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序。首先,我们用一个示例来说明makefile的书写规则,以便给大家一个感性认识。这个示例来源于gnu 的make使用手册,在这个示例中,我们的工程有8个c文件,和3个头文件,我们要写一个makefile来告 诉make命令如何编译和链接这几个文件。我们的规则是:如果这个工程没有编译过,那么我们的所有c文件都要编译并被链接。如果这个工程的某几个c文件被修改,那么我们只编译被修改的原创 2020-05-09 19:05:59 · 251 阅读 · 0 评论