自定義函式

define

使用define關鍵字設置變量的值可以有換行,這有利於定義一系列的命令(前面我們講過「命令包」的技術就是利用這個關鍵字)。define指示符後面跟的是變量的名字,而重起一行定義變量的值,定義是以endef關鍵字結束。其工作方式和「=」操作符一樣。變量的值可以包含函數、命令、文字,或是其它變量。因為命令需要以[Tab]鍵開頭,所以如果你用define定義的命令變量中沒有以[Tab]鍵開頭,那麼make就不會把其認為是命令。

define two-lines
    echo foo
    echo $(bar)
endef

call

$(call <expression>,<parm1>,<parm2>,<parm3>...)

當make執行這個函數時,<expression>參數中的變量,如$(1),$(2),$(3)等,會被參數<parm1>,<parm2>,<parm3>依次取代。而<expression>的返回值就是call函數的返回值。

define generate_file
    sed 's/{NAME}/$(1)/' greetings.tmpl >$(2).txt
endef

all:
    $(call generate_file,John Doe,101)
    $(call generate_file,Peter Pan,102)

eval

$(eval text)

它的意思是 text 的內容將作為makefile的一部分而被make解析和執行。可以想像成用eval會展開變數一次然後產生新的makefile。

results matching ""

    No results matching ""