makefile中一些符号的含义
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                makefile中一些符号的含义
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                - 先標(biāo)注一個(gè)很好的makefile教程
- 這里歸納了如下符號的含義,請對號入座如下 $@, $^, $<, $?和=, +=, :=, ?=和;\ 和 $, $$和%
- section1:(自動化變量,更多自動化變量可參照) - $@ 表示目標(biāo)文件(標(biāo)的)
 $^ 表示所有的依賴文件(標(biāo)的)
 $< 表示第一個(gè)依賴文件(標(biāo)的)
 $? 表示比目標(biāo)還要新的依賴文件列表
- 例子分析:(如有hello.c hi.c main.c 源文件,按照 Makefile 規(guī)則寫)
 
- $@ 表示目標(biāo)文件(標(biāo)的)
- section2: - = 直接對變量賦值
- += 追加賦值
- := 該符號右側(cè)是否有變量,如有變量且變量的定義在后邊,則忽略該右側(cè)變量,其他情況同=號
- ?= 如果符號左側(cè)的變量已經(jīng)定義過則跳過該句。
- section2的具體例子可參照
 
- section3:(分號和反斜線) - 分號是分隔符,反斜線是換行符。像if語句塊或for語句要寫在一行時(shí),必須使用分號進(jìn)行分隔,在此期間如需進(jìn)行換行則使用反斜線\進(jìn)行換行即可。此外,注意if語句后的左中括號[前后都有有空格,雙等號“==”表示相等符號,單等號“=”既可以表示相等也可表示賦值,其區(qū)別為:當(dāng)比較時(shí),比較符號左右都有空格;賦值時(shí),等號左右沒空格。
 
- section4:( $和$$) - 單美元符號$表示引用makefile定義變量的值,雙美元符號$$表示引用shell命令中定義的變量的值。一些使用事項(xiàng)可參照
 
- section5:%(makefile中通配符,附與系統(tǒng)通配符的區(qū)別) - 區(qū)別1:Makefile中的%標(biāo)記和系統(tǒng)通配符*的區(qū)別在于,*是應(yīng)用在系統(tǒng)中的,%是應(yīng)用在這個(gè)Makefile文件中的。
- 區(qū)別2:Makefile的通配符%是在**帶著目的(如“尋找test1.o”)**的時(shí)候才會把他要尋找的目標(biāo)套用通配符%中。而系統(tǒng)通配符*是我不知道目標(biāo)的名字,系統(tǒng)該目錄下中所有后綴為.c的文件都是我要找的。
- 重要例子:
 如果你想編譯一個(gè)文件夾下的所有.c文件,你可能會這樣寫:
 
 Make: *** target not found. stop.
 要知道原因,我們先來看看另一個(gè)makefile的運(yùn)行過程,例如有Makefile如下:test1.o:test1.cgcc -o test1.o test1.c test2.o:test2.cgcc -o test2.o test2.c all:test1.o test2.o 如果沒有指定輸出項(xiàng)目的時(shí)候Make會自動找到makefile中第一個(gè)目標(biāo)中沒有通配符的目標(biāo)進(jìn)行構(gòu)造,所以步驟是:
 1、構(gòu)造all,發(fā)現(xiàn)需要test1.o和test2.o
 2、這個(gè)時(shí)候他就會在Makefile文件中找到目標(biāo)能匹配test1.o和test2.o的規(guī)則。
 3、找到test1.o的規(guī)則并且知道test1.c存在,運(yùn)行下面的命令。
 4、同步驟三構(gòu)造出test2.o
 5、現(xiàn)在構(gòu)造all的源文件已經(jīng)齊全,構(gòu)建all
 其中最重要的是第2步。
 Makefile的通配符是在帶著目的(如“尋找test1.o”)的時(shí)候才會把他要尋找的目標(biāo)套用通配符%中。
 而系統(tǒng)通配符*的意思是:
 1、我不知道目標(biāo)的名字,系統(tǒng)該目錄下中所有后綴為.c的文件都是我要找的。
 2、然后遍歷目錄的文件,看是否匹配。找出所有匹配的項(xiàng)目。
總結(jié)
以上是生活随笔為你收集整理的makefile中一些符号的含义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 2017年,我要怎么学前端
- 下一篇: 电化学传感器结构
