makefile学习记录:空字符和""," "区别以及变量定义中多余的空格如何处理

Makefile中空字符和空格( " " )还有 ""并不是一个东西
empty := " " 这样是一个空格, empty:= 什么都不写是空,还有empty := ""

下面是例子介绍这几个东西为什么是不一样的,makefile中的sgy变量之前并没有定义,所以是空,这里说的空相当于上面所讲的空字符

comma:= ,
**empty:=**
space:= $(empty)g$(empty)cc
foo:
ifeq ($(empty),$(sgy))
    @echo equal
else
    @echo $(empty)
    @echo $(space)
    @echo not equal
endif
clean:
    rm foo *.o

这段代码说明了empty := 和未定义的变量$(sgy)是相等的,上述这段代码打印的结果是

#example 1
book@book-desktop:/work/nfs_root/first_fs/sgy/first_video/exam/Makefile$ make
equal

更改上述代码
empty := “”

打印结果为—gcc上面的空行empty变量的值

#example 2
book@book-desktop:/work/nfs_root/first_fs/sgy/first_video/exam/Makefile$ make

gcc
not equal

同样将其改成empty := ” ”
打印的结果为

#example 3
book@book-desktop:/work/nfs_root/first_fs/sgy/first_video/exam/Makefile$ make

 g cc
not equal

从上述的实验看可以得出结论 空字符和 “” ,还有 ” ” 都不是一个东西.
另外变量定义时会将多余的空格忽略,例如定义一个变量

space:=      cc    gg
make的结果是
gg cc
即=到cc之间的那些空格都会忽略,而cc和gg之间的空格会当成一个空格
发布了17 篇原创文章 · 获赞 3 · 访问量 3560

猜你喜欢

转载自blog.csdn.net/sgy1993/article/details/74994315