第5課 預定義變數的使用

2022-02-21 13:34:11 字數 2241 閱讀 7209

(1)自動變數

(2)特殊變數

(1)自動變數的意義

$@當前規則中觸發命令被執行的目標

$^當前規則中所有的依賴

$<當前規則中的第乙個依賴

(2)自動變數的使用示例

執行make all後程式的輸出

$@ => all

$^ => first second third

$< => first

注意:

ⅰ. 在執行makefile指令碼時,make首先會展開指令碼中的變數等,相當於c中預處理過程。

然後再將相應規則中的命令交給shell執行。

ⅱ."$"對於makefile有特殊含義,輸出時需要加上乙個 "$" 進行轉義。

ⅲ."$@"對於bash shell 有特殊含義,輸出時需要加上 "\" 進行轉義。 $@是shell輸入的引數的個數。

1

#演示自動變數的使用

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)

(1)$(make),當前make直譯器的檔名

(2)$(makecmdgoals),命令列中指定的目標名(make的命令列引數 make xx , xx 即makecmdgoals)

(3)$(makefile_list)

1

#測試以上三個特殊變數的含義

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

(4)$(make_version),當前make直譯器的版本

(5)$(curdir),當前make直譯器的工作目錄

(6)$(.variables),所有已經定義的變數名列表(自定義變數+預定義變數

自動變數、特殊變數))

1

#測試以上三個特殊變數的含義

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)"

注:本文整理於《狄泰12月提公升計畫》課程內容狄泰qq群:199546072

PHP中的預定義常量 預定義變數 魔術常量

php中的預定義常量 預定義變數 魔術常量 1 預定義常量 核心預定義常量 是在php的核心中就定義好了的常量。區分大小寫。php version 內建常量,php程式的版本,如3.0.8 dev php os 內建常量,執行php解析器的作業系統名稱,如windows。php eol 系統換行符,...

GNU make 的主要預定義變數

gnu make 的主要預定義變數 預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的...

GNU make 的主要預定義變數

預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變...