
makefile
文章平均质量分 68
printf_mylife
只是简单的复制我所看过的东西
展开
-
makefile--条件判断
使用条件判断使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以是比较变量的值,或是比较变量和常量的值。 示例下面的例子,判断$(CC)变量是否“gcc”,如果是的话,则使用GNU函数编译目标。 libs_for_gcc = -lgnunormal_libs =foo: $(objects)ifeq ($(CC),gcc)转载 2014-03-28 10:40:45 · 611 阅读 · 0 评论 -
makefile--隐含规则
隐含规则在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makefile转载 2014-04-09 11:41:38 · 863 阅读 · 0 评论 -
MAKEFILE --变量
使用变量在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以是数字开头),转载 2014-03-27 10:17:53 · 801 阅读 · 0 评论 -
makefile--命令
书写命令 每条规则中的命令和操作系统Shell的命令行是一致的。make会按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/sh”——转载 2014-03-26 09:17:08 · 1365 阅读 · 0 评论 -
makefile--运行
make 的运行一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用 make命令的。[编辑]make的退出码make命令执行后有三个退出码: 0 —转载 2014-04-04 11:46:21 · 1204 阅读 · 0 评论 -
MAKEFILE--多目标
Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令不是同一个,这可能会给我们带来麻烦,不过好在我们可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。bigoutput转载 2014-03-24 11:30:37 · 1290 阅读 · 0 评论 -
makefile--函数
使用函数在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。[编辑]函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $( )或是 ${ }这里,就是函数名,make支持的函数不转载 2014-04-03 16:51:40 · 1248 阅读 · 1 评论 -
MAKEFILE -- 自动生成依赖性
在Makefile中,我们的依赖关系可能会需要包含一系列的头文件,比如,如果我们的main.c中有一句“#include "defs.h"”,那么我们的依赖关系应该是:main.o : main.c defs.h但是,如果是一个比较大型的工程,你必需清楚哪些C文件包含了哪些头文件,并且,你在加入或删除头文件时,也需要小心地修改Makefile,这是一个很没有维护性的工作。为了避免这转载 2014-03-24 11:50:24 · 721 阅读 · 0 评论 -
MAKEFILE--通配符
如果我们想定义一系列比较类似的文件,我们很自然地就想起使用通配符。make支持三个通配符:“*”,“?”和“~”。这是和Unix的B-Shell是相同的。 波浪号(“~”)字符在文件名中也有比较特殊的用途。如果是“~/test”,这就表示当前用户的$HOME目录下的test目录。而 “~hchen/test”则表示用户hchen的宿主目录下的test目录。(这些都是Unix下的小知识了,mak转载 2014-03-24 11:26:08 · 1702 阅读 · 0 评论 -
MAKEFILE --文件搜索
在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make自动去找。Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果定义了这个变量,那么,mak转载 2014-03-24 11:03:23 · 601 阅读 · 0 评论 -
MAKEFILE--静态模式
静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法: : : ...targets定义了一系列的目标文件,可以有通配符。是目标的一个集合。 target-pattern是指明了targets的模式,也就是的目标集模式。 prereq-patterns是目标的依赖模式,它对target-pattern形成的模式再转载 2014-03-24 11:33:49 · 530 阅读 · 0 评论 -
MAKEFILE -- 伪目标
下面的“clean”目标,是一个“伪目标”, clean: rm *.o temp 我们生成了许多文件编译文件,我们也应该提供一个清除它们的“目标”以备完整地重编译而用。 (以“make clean”来使用该目标) ,调用相应的规则,来清除许多编译的文件(如:*.o文件)因为,我们并不生成“clean”这个文件。“伪目标”并不是一个转载 2014-03-24 11:22:12 · 584 阅读 · 0 评论 -
make 中 -n 命令的使用
man make手册中是这样解释的:-n Print the commands that would be executed, but do not execute them. 执行命令,但不是真正的执行。常用来看,自己写的makefile变量展开后是什么。 例如:makefile中有如下: ........tso_biz_alarmduty1转载 2014-05-16 16:26:13 · 1231 阅读 · 0 评论