makefile

執行流程

  • 1.讀入主Makefile (主Makefile中能夠引用其餘Makefile)
  • 2.讀入被include的其餘Makefile
  • 2.初始化文件中的變量
  • 4.推導隱晦規則, 並分析全部規則
  • 5.爲全部的目標文件建立依賴關係鏈
  • 6.根據依賴關係, 決定哪些目標要從新生成
  • 7.執行生成命令

內置環境變量

  • MAKECMDGOALS 變量記錄了命令行參數指定的終極目標列表
  • 例: make hello world $(MAKECMDGOALS) = hello world

= ?= :=

  • var1 = value1 最基本的賦值, 不當即展現變量
  • var2 := $(value2 )當即展開變量, := 只能使用前面定義好的變量, = 能夠使用後面定義的變量
  • var3 ?= value3 只有在該變量爲空時才設置值
  • var4 += value4 將值追加到變量的尾端

錯誤抑制符 @ -

  • 不用前綴, 輸出執行的命令以及命令執行的結果, 出錯的話中止執行
  • 前綴 @, 只輸出命令執行的結果, 出錯的話中止執行
  • 前綴 -, 命令執行有錯的話, 忽略錯誤, 繼續執行 例: @echo $(name)

$@ $^ $< $?

  • $@ 表示目標文件
  • $^ 表示全部依賴文件
  • $+ 表示全部依賴(文件包含重複)
  • $< 表示第一個依賴文件
  • $? 表示比目標還要新的依賴文件列表

wildcard pattern placeholder

src := a.c b.c 

    $(wildcard *.c) 匹配全部後綴.c文件
    $(src: .c=.c) 替換文件後綴.c爲.o

    模式佔位符匹配規則: 目標和依賴文件名必須同樣, 即a.c, a.c
    %.o : %.c
        $(CC) -c $< -o $@

.PHONY 僞目標

.PHONY: clean
    clean: 
        rm -rf *

findstring

$(findstring <find>,<in>) 

#函數功能: 在字符串<in>中查找<find>字符串
#返回:若是找到,那麼返回<find>,不然返回空字符串。

filter

$(filter pattern…,text)

#函數功能: 過濾掉字串"TEXT"中全部不符合模式「PATTERN」的單詞, 保留全部符合此模式的單詞. 能夠使用多個模式, 模式中通常須要包含模式字符"%"
#返回值: "TEXT"字串中全部符合模式"PATTERN"的字串

words

$(words <text>)
#函數功能: 統計中字符串中的單詞個數
#返回值: 返回中的單詞數

strip

$(strip <string>)
功能:去掉<string>字串中開頭和結尾的空字符。
返回:返回被去掉空格的字符串值
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息