
Makefile
CV_ML_DP
赏cv,ml,dp之美,创其价值
展开
-
Makefile之学习总结(1)---工程搭建
下面显示level2的文件信息:以上为总结Makefile所用到的雏形项目工程,比较简单。(END)原创 2016-08-05 00:20:30 · 293 阅读 · 0 评论 -
跟我一起写Makefile(7)--- 环境变量MAKEFILES+make的工作方式
原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886四、环境变量 MAKEFILES 如果你的当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是,从这个环境变中引入的Makefile的“目标”转载 2016-08-06 21:24:29 · 1012 阅读 · 0 评论 -
跟我一起写Makefile(8)--- 书写规则(规则语法+通配符+文件搜索+伪目标+多目标+静态模式+自动依赖)
原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886书写规则 ———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Mak转载 2016-08-06 21:29:51 · 376 阅读 · 0 评论 -
跟我一起写Makefile(9)--- 书写命令(显示命令+命令执行+命令出错+嵌套执行make+定义命令包)
书写命令 ———— 每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin转载 2016-08-06 22:08:56 · 2388 阅读 · 0 评论 -
跟我一起写Makefile(10)--- 变量(嵌套变量+追加变量+overrid+多行变量+环境变量+目标变量+模式变量)
使用变量 ———— 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以转载 2016-08-06 22:16:58 · 4439 阅读 · 0 评论 -
跟我一起写Makefile(11)--- 使用条件判断(示例+语法)
使用条件判断 —————— 使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 一、示例下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。 libs_for_gcc = -lgnu normal_libs = foo: $(objects) ifeq转载 2016-08-06 22:20:47 · 1686 阅读 · 0 评论 -
跟我一起写Makefile(12)--- 函数(字符串函数+文件名操作函数+foreach+if+call+origin+shell+控制make的函数)
使用函数 ———— 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $(; ;) 或是 ${; ;} 这里,;就是函数名,make支持的函数转载 2016-08-06 22:32:27 · 428 阅读 · 0 评论 -
跟我一起写Makefile(13)--- make的运行(make的退出码+指定Makefile+制定目标+检查规则+make的参数)
make 的运行 —————— 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码:转载 2016-08-06 22:36:41 · 3465 阅读 · 0 评论 -
跟我一起写Makefile(14)--- 隐含规则(命令变量+命令参数变量+定义模式规则+自动化变量+模式匹配+)
隐含规则 ———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的转载 2016-08-06 22:53:53 · 507 阅读 · 0 评论 -
跟我一起写Makefile(6)--- Makefile里有什么+Makefile的文件名+引用其他的Makefile
原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886一、Makefile里有什么? Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 2、隐晦规则。由于转载 2016-08-06 21:22:15 · 2266 阅读 · 0 评论 -
跟我一起写Makefile(5)--- 清空目标文件的规则
七、清空目标文件的规则 每个Makefile中都应该写一个清空目标文件(.o和执行文件)的规则,这不仅便于重编译,也很利于保持文件的清洁。这是一个“修养”(呵呵,还记得我的《编程修养》吗)。一般的风格都是:clean: rm edit $(objects) 更为稳健的做法是: .PHONY : clean clean : -rm edit $(objects)转载 2016-08-06 21:17:09 · 2733 阅读 · 0 评论 -
Makefile之学习总结(3)--- Makefile (v2.0)
在本章将会优化Makefile v1.0的2)和3)以及4),本章的Makefile v2.0会有以下几个特点:1)支持指定平台的make命令,如:make platform=m64x862)自动添加所有的源码目录3)自动添加所有的include目录4)所有.o目标文件都编译生成到对应的.cpp所在目录5)不支持生成本工程的.a库以及.so动态库(暂时不打算支持)注:相关工程结构请查看 Makefile之学习总结(1)和 Makefile之学习总结(2)原创 2016-08-05 23:45:37 · 375 阅读 · 0 评论 -
Makefile之学习总结(2)--- Makefile (v1.0)
此文章中的Makefile特点:1)支持指定平台的make命令,如:make platform=m64x862)需要手动添加源码目录3)自动添加Include目录,但只支持L2级目录,仅形如后面两种:./Include和./Include/gtest4)所有.o目标文件都编译生成到指定一个目录下./objs5)不支持生成本工程的.a库(暂时不打算支持)其中2)和3)是本版Makefile的局限性,下一版本会优化此局限性。原创 2016-08-05 00:37:30 · 1145 阅读 · 0 评论 -
Makefile之学习总结(4)--- Makefile (v3.0)
Makefile v2.0会有以下几个特点,详见Makefile之学习总结(3) --- Makefile (v2.0):1)支持指定平台的make命令,如:make platform=m64x862)自动添加所有的源码目录3)自动添加所有的include目录4)所有.o目标文件都编译生成到对应的.cpp所在目录5)不支持生成本工程的.a库以及.so动态库(原创 2016-08-06 00:09:18 · 579 阅读 · 0 评论 -
Makefile之学习总结(5)--- Makefile (v4.0)
Makefile 4.0的特点:1)支持指定平台的make命令,如:make platform=m64x862)自动添加所有的源码目录(非源码文件所在目录不会被添加进去)3)自动添加所有的include目录(非Include目录不会被添加进去)4)所有.o目标文件都编译生成到对应的.cpp所在目录5)不支持生成本工程的.a库以及.so动态库(暂时不打算支持)原创 2016-08-06 00:21:59 · 2709 阅读 · 0 评论 -
跟我一起写Makefile(1)--- 概述
原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886/概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士转载 2016-08-06 20:57:58 · 332 阅读 · 0 评论 -
跟我一起写Makefile(2)--- Makefile介绍+Makefile规则
Makefile 介绍 ——————— make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。 首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个转载 2016-08-06 21:00:36 · 321 阅读 · 0 评论 -
跟我一起写Makefile(3)--- make如何工作+makefile使用变量
原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886/三、make是如何工作的 在默认的方式下,也就是我们只输入make命令。那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这转载 2016-08-06 21:07:46 · 362 阅读 · 0 评论 -
跟我一起写Makefile(4)--- 让make自动推导+另类风格的makefile
原文链接:http://blog.youkuaiyun.com/haoel/article/details/2886/五、让make自动推导GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果转载 2016-08-06 21:12:20 · 566 阅读 · 0 评论 -
跟我一起写Makefile(15)--使用make更新函数库文件(函数库文件的成员+函数库成员的隐含规则+函数库文件的后缀规则)
使用make更新函数库文件 ——————————— 函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。 一、函数库文件的成员 一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成: archive(member) 这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"a转载 2016-08-06 22:59:56 · 371 阅读 · 0 评论