学习笔记-makefile简单用法

 

目标:我们要去make 什么? make xxx 中的xxx,就是我们最终要生成的东西。

依赖:用来生成目录的原材料

命令:加工方法,

make xxx的过程,就是使用使命令将依赖加工成目标的过程。

1、% 是Makefile 中的通配符,代表一个或几个字母 。%.o 表示所有以.o结尾的文件

2、自动推导是Makefile的规则,

3、Makefile 中定义和使用变量和shell 脚本中的非常相似。没有变量类型,直接定义使用,引用变量时用$var

4、伪目标(.PHONY)

这个目标本身不代表一个文件,执行这个目标不是为了得到某个文件或东西,而是单纯为了执行这个目标下面的命令。

5、Makefile合法的文件名:Makefile 和 makefile

6、引用其它的Makefile的文件,用include ,makefile的文件一般是.mk 后缀的。

7、注释使用#,和shell 一样

8、命令前面 加@用来静默执行

如果不想看到命令本身,只看结果,则可以用@来进行静默执行。

9、

  Makefile 并不要求赋值两边一定要用空格或者无空格,这个比shell要宽松得多。

(1)=       最简单的赋值,被解释时取决于最后一次的赋过的值,得往后看最后赋过值是多少。

(2):=     一般也是赋值,就地直接解释,只需要往前看即可。

(3)?=     如果变量前面没有被定义(赋值)过则执行这条赋值,如果定义(赋值)过,则本行忽略

(4)+=     用来给一个已经赋值的变量接续赋值,把这次的值加到原值的后面(类似开strcat),原值和接续的值之间会有一个空格隔开。

10、Makefile 环境变量

(1)Makefile 中用export 声明的就是环境变量,一般情况下要求环境变量名用大写,普通变量名用小写。

(2)环境变量类似于整个工程中所有Makefile之间可以共享的全局变量,而普通变量只是当前本Makefile中使用的局部变量

  所以要注意:定义了一个环境变量可能会影响到工程中别的Makefile文件。

(3)Makefile中可能有一些环境变量可能是Makefile本身自己定义的内部的环境变量,或者是当前的执行环境提供的环境变量

  (如我们在make执行时给Makefile传参,就相当于给当前的Makefile传了一个环境变量。) 

 

11、Makefile中使用通配符

(1)*  若干个任意字符

(2)?  1个任意字符

(3)[ ]     将[ ]中的字符依次去和外面的结合匹配

(4)%  和*号很相似,但%一般只用于规则描述中,又叫规则通配符

12、自动变量

  有些情况下,文件集中非常多,描述很麻烦,所以Makefile用一些特殊的符号来替代某种条件的文件集,这就形成了自动变量。

  含义:预定义的特殊意义的符号,类似于C语言编译器中预制的那些宏 __FILE__ 一样

  常见的自动变量:

  (1)$@  规则的目标文件名

  (2)$<  规则的依赖文件名

  (3)$^  依赖的文件集合

 

posted @ 2021-04-11 17:36  Ben002  阅读(322)  评论(0编辑  收藏  举报