makefie
p.c.wang
这个作者很懒,什么都没留下…
展开
-
makefile详解 函数 foreach if call origin shell
makefile详解 函数 foreach if call origin shell 控制make函数四、foreach 函数 foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的转载 2014-12-01 19:04:57 · 1056 阅读 · 0 评论 -
makefile详解 定义模式规则
五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符。"%"的意思是表示一个或多个任意字符。在依赖目标中同样可以使用"%",只是依赖目标中的"%"的取值,取决于其目标。有一点需要注意的是,"%"的展开发生在变量和函数的展开之后,变量和函数的展开发生在make载入Makefile时,而模式规则中的"%"则发生转载 2014-12-01 19:31:44 · 928 阅读 · 0 评论 -
makefile详解 make 的运行
一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码: 0 —— 表示成功执行转载 2014-12-01 19:10:56 · 806 阅读 · 0 评论 -
makefile详解 多行变量 环境变量 目标变量 模式变量
六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab转载 2014-12-01 19:22:27 · 4255 阅读 · 0 评论 -
makefile详解 嵌套执行make,定义命令包
在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。例如,我们有一个子目录叫subdir,这个目录下有个Makefile文转载 2014-12-01 19:15:18 · 2421 阅读 · 0 评论 -
makefile之查漏补缺
1.忽略命令的出错,我们可以在Makefile的命令行前加一个减号“-”(在Tab键之后),标记为不管命令出不出错都认为是成功的。如: clean: -rm -f *.o转载 2014-12-02 08:52:56 · 786 阅读 · 0 评论 -
makefile详解 自动生成依赖性
在Makefile中,我们的依赖关系可能会需要包含一系列的头文件,比如,如果我们的main.c中有一句“#include "defs.h"”,那么我们的依赖关系应该是: main.o : main.c defs.h但是,如果是一个比较大型的工程,你必需清楚哪些C文件包含了哪些头文件,并且,你在加入或删除头文件时,也需要小心地修改Makefile,这是一个很没有维护性的工作转载 2014-12-01 19:33:48 · 1401 阅读 · 0 评论 -
makefile详解 变量高级用法 追加变量值
这里介绍两种变量的高级使用方法,第一种是变量值的替换。我们可以替换变量中的共有的部分,其格式是“$(var:a=b)”或是“${var:a=b}”,其意思是,把变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串。这里的“结尾”意思是“空格”或是“结束符”。还是看一个示例吧: foo := a.o b.o c.o bar := $(foo:.转载 2014-12-01 19:41:30 · 1980 阅读 · 0 评论 -
makefile详解 变量
定义变量makefile的变量定义有三种方式1. 立即赋值 a:=b2. 延迟赋值 a=b3. 条件赋值 a?=b4. 附加赋值 a+=b它们之间的区别是,第一种方式,会立即计算b的值,并赋值给a;第二种方式,相当于C++和java的引用。如果后面b的值改变了,那么a的值也会改变;第三种方式,如果a没有定义转载 2014-12-01 19:38:32 · 3065 阅读 · 0 评论 -
makefile详解 书写命令
每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——UNIX的标准S转载 2014-12-01 19:36:32 · 1409 阅读 · 0 评论 -
makefile详解 隐含规则
在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile中没有书写这转载 2014-12-01 19:27:46 · 1637 阅读 · 0 评论 -
makefile详解 函数 字符串 文件名
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $(; ;)或是 ${; ;}这里,;就是函数名,make支转载 2014-12-01 19:25:25 · 1252 阅读 · 0 评论 -
makefile之创建依赖关系
gcc 选项: -M: 自动找寻源文件中包含的头文件,生成文件关联的信息。包含目标文件所依赖的所有源代码; -MD: 功能同上,并将生成的依赖信息保存到.d文件中 -MM: 它功能同-M,但它会忽略#include<file>造成...原创 2019-08-30 10:52:30 · 1052 阅读 · 0 评论