Linux专题-Makefile(1)

发布于:2024-05-10 ⋅ 阅读:(29) ⋅ 点赞:(0)

1.Makefile中的注释使用 #
2. Makefile中的静默执行。
makefile中,默认情况下执行一行命令前会先把这一行命令打印出来,然后再执行这条命令。如果不想看到打印的命令,则可以使用静默执 行的功能,即仅打印出命令执行的结果。使用方法是在命令前加@,例如:@echo "hello world"
3.Makefile中的变量赋值运算符
?=:如果变量前面并没有赋值过则执行这条赋值,如果前面已经赋值过了则本行被忽略。

var="abcd"   #makefile的"="两边是可以有空格的,但是shell中不可以
var ?= "efgh"
all:
	echo $(var)

执行结果为:

echo "abcd"
abcd

+=:用来给一个已经赋值的变量接续赋值,意思就是把这次的值加到原来的值的后面,有点类似于strcat。(在shell makefile等文件中,可以认为所有变量都是字符串,+=就相当于给字符串stcat接续内容)(注意一个细节,+=续接的内容和原来的内容之间会自动加一个空格隔开)

var=abcd  
var+=efgh
all:
	echo $(var)

执行结果为:

echo abcd efgh
abcd efgh   #注意这两个字符串之间的空格

=:用=赋值的变量,在被解析时他的值取决于最后一次赋值时的值,所以你看变量引用的值时不能只往前面看,还要往后面看

A=abc
B=$(A)def
A=gh
all:
	echo $(B)

执行结果为:

echo ghdef
ghdef

:=:用:=来赋值的,则是就地直接解析,只用往前看即可

A=abc
B:=$(A)def
A=gh
all:
	echo $(B)

执行结果为:

echo abcdef
abcdef

4.Makefile中的环境变量
①makefile中用export导出的就是环境变量。一般情况下要求环境变量名用大写,普通变量名用小写。
②环境变量和普通变量不同,可以这样理解:环境变量类似于整个工程中所有Makefile之间可以共享的全局变量,而普通变量只是当前本Makefile中使用的局部变量。所以要注意:定义了一个环境变量会影响到工程中别的Makefile文件,因此要小心。

5.Makefile中使用通配符
①* 若干个任意字符
②? 1个任意字符
③[] 将[]中的字符依次去和外面的结合匹配

查看文件大小
ls -l u-boot.bin
du -h u-boot.bin

网站公告

今日签到

点亮在社区的每一天
去签到