Makefile
雲烟
可以卑微如尘土,不可扭曲如蛆虫。
展开
-
Makefile变量的使用
基本原则:变量区分大小写,并且不能用: # =或空字符等。 变量声明时需要赋初值。 变量使用时需要在名称前加$。 如果需要使用真实的$,则需要$$操作。 任何地方都可以使用变量。 变量的值可以用其它变量构造,但是要避免递归定义和相互循环定义。 :=操作符:进行变量定义变量,可以避免变量的循环定义,这样的定义只能使用前面定义好的变量,而不能使用后面定义 定义一个空格变量:nulls...原创 2020-03-10 20:13:18 · 295 阅读 · 0 评论 -
Makefile定义命令包
如果Makefile中出现一些相同命令,可以为这些相同的命令定义一个变量。以define开始,endef结束。例子: define run-abs abs $(firstword $^) mv abs.bc $@ endefrun-abs是命令包名称。接下来是运行abs,因为abs程序总是生成“abs.bc”的文件,所以第二行的命令就是把这个文件...原创 2020-03-05 20:35:49 · 418 阅读 · 0 评论 -
Makefile嵌套
shell用法,如果第二条命令执行第一条的结果,则需要写在一行上。 如果正常命令出错,会停止当前编译,忽略出错则使用"-",例如clean:-rm -f *.o 或者给 make 加上“-i”或是“--ignore-errors”参数。 make 的参数的是“-k”或是“--keep-going”,这个参数的意思是,如果某规则中的命令出错了,那么就终目该规则的执行,但继续...原创 2020-03-05 20:32:57 · 446 阅读 · 0 评论 -
Makefile显示命令
make的时候会将执行的命令行显示在屏幕上,使用@后将屏蔽命令信息。 make 执行时,带入make参数“-n”或“--just-print”,那么其只是显示命令,但不会执行命令,这个功能很有利于我们调试我们的Makefile,看看我们书写的命令是执行起来是什么样子的或是什么顺序。 make 参数“-s”或“--slient”则是全面禁止命令的显示。...原创 2020-03-05 20:25:37 · 478 阅读 · 0 评论 -
Makefile自动生成依赖
添加C/C++编译器支持选项"-M"(GNUc/c++编译器则是“-MM”),功能是自动寻找源文件中包含的头文件,并生成一个依赖关系。例子:cc -M main.c 此语句输出是main.o : main.c define.h。然后把依赖关系放置到同名的.d文件中,在make的时候自动更新或生成.d文件,并且包含在Makefile文件中,就可以自动生成每个文件的依赖关系。例如一...原创 2020-03-05 20:17:28 · 372 阅读 · 0 评论 -
Makefile静态模式
静态模式可以灵活定义多目标的规则。语法: <targets...><targets-pattern>:<prereq-patterns...> <commands> ...targets表示目标集合。 target-parrtern表示目标的模式选择。 prereq-parrterns表示目标的依赖模式。例子...原创 2020-03-05 20:11:33 · 223 阅读 · 0 评论 -
Makefile书写规则
Makefile必须要以[Tab]键开始。并且和Shell一样一条条执行。 规则包括依赖关系和生产目标的方法。 规则的顺序非常重要,第一条规则中的目标会被定为终极目标。如果第一条规则中有多个目标,那么第一个目标会成为终极目标。 支持shell中的通配符“*”,“?”和“[...]”。 指明查找路径使用“VPATH”。例:VPATH = src:../headers(冒号是分隔符),先在当前...原创 2020-03-05 20:04:12 · 171 阅读 · 0 评论 -
Makefile自动化变量
简单使用时目标和依赖文件都是一系例的文件,那么我们如何书写一个命令来完成从不同的依赖文件生成相应的目标?因为在每一次的对模式规则的解析时,都会是不同的目标和依赖文件。自动化变量就是完成这个功能的。$@:表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。 $%:仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"f...原创 2020-03-04 18:34:44 · 260 阅读 · 0 评论 -
Makefile简述
Makefile组成:显示规则、隐晦规则、变量定义、文件指示和注释。Makefile的寻找规则:是在当前目录依次找三个文件:"GNUmakefile"、"makefile"、"Makefile"。如果makefile有另外的名字,则需要加"-f"或"--file"参数指定,例如一个makefile文件名为aa.mk,则执行需要make -f aa.mk或者make -file aa.mk。...原创 2020-03-04 18:06:01 · 323 阅读 · 0 评论 -
Makefile条件判断
Makefile中的条件判断类似C语言中if比较值。使用ifeq、ifneq、ifdef。 语法:<conditional-directive> <text-if-true> endif或者 <conditional-directive> <text-if-true> else <...原创 2020-03-03 18:00:39 · 330 阅读 · 0 评论