(1)自動變數
(2)特殊變數
(1)自動變數的意義
$@當前規則中觸發命令被執行的目標
$^當前規則中所有的依賴
$<當前規則中的第乙個依賴
(2)自動變數的使用示例
執行make all後程式的輸出
$@ => all
$^ => first second third
$< => first
注意:
ⅰ. 在執行makefile指令碼時,make首先會展開指令碼中的變數等,相當於c中預處理過程。
然後再將相應規則中的命令交給shell執行。
ⅱ."$"對於makefile有特殊含義,輸出時需要加上乙個 "$" 進行轉義。
ⅲ."$@"對於bash shell 有特殊含義,輸出時需要加上 "\" 進行轉義。 $@是shell輸入的引數的個數。
1(1)$(make),當前make直譯器的檔名#演示自動變數的使用
23 cc :=gcc
4 target := hello.out
56 $(target) : main.o func.o
7 $(cc) -o $@ $^
89 main.o : main.c
10 $(cc) -o $@ -c $<
1112 func.o : func.c
13 $(cc) -o $@ -c $<
1415 .phony :rebuild all clean
1617 rebuild :clean all
1819 all :$(target)
2021 clean :
22 rm *o $(targeta)
(2)$(makecmdgoals),命令列中指定的目標名(make的命令列引數 make xx , xx 即makecmdgoals)
(3)$(makefile_list)
1(4)$(make_version),當前make直譯器的版本#測試以上三個特殊變數的含義
23 .phony :all out first second third test
45 all out :
6 @echo "$(make)"
7 @echo "$(makecmdgoals)"
8 @echo "$(makefile_list)"
910 first :
11 @echo "first"
1213 second :
14 @echo "second"
1516 third :
17 @echo "third"
1819 test :
20@$(make) first
21@$(make) second
22 @$(make) third
(5)$(curdir),當前make直譯器的工作目錄
(6)$(.variables),所有已經定義的變數名列表(自定義變數+預定義變數(
自動變數、特殊變數))
1注:本文整理於《狄泰12月提公升計畫》課程內容狄泰qq群:199546072#測試以上三個特殊變數的含義
23 .phony :test1 test2
45 tdelphi :=delphi tang
6 d.t.software := d.t.
78 test1 :
9 @echo "$(make_version)"
10 @echo "$(curdir)"
11 @echo "$(.variables)"
1213 test2 :
14 @echo "$(rm)"
PHP中的預定義常量 預定義變數 魔術常量
php中的預定義常量 預定義變數 魔術常量 1 預定義常量 核心預定義常量 是在php的核心中就定義好了的常量。區分大小寫。php version 內建常量,php程式的版本,如3.0.8 dev php os 內建常量,執行php解析器的作業系統名稱,如windows。php eol 系統換行符,...
GNU make 的主要預定義變數
gnu make 的主要預定義變數 預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的...
GNU make 的主要預定義變數
預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變...