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之間的空格會當成一個空格
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章