国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Makefile中$$的使用

2019-11-08 01:44:04
字體:
來源:轉載
供稿:網友
             Makefile中使用$$的使用 2008-07-16 11:24:01

分類:

Makefile中使用$$的使用    在makefile中,會經常使用shell命令,也經常見到$var 和 $$var的情況,有什么區別呢,區別大了。不要認為在makefile的規則的命令行中使用$var就是將makefile的變量和shell共享了,這里僅僅是讀取makefile的變量然后擴展開,將其值作為參數傳給了一個shell命令。而$$var是在訪問一個shell命令內定義的變量,而非makefile的變量。此外,如果某規則有n個shell命令行構成,而相互之間沒有用';'和'/'連接起來的話,就是相互之間沒有關聯的shell命令,相互之間也不能變量共享。看如下例子:makefile代碼段1:VAR=3   target: PRerequsite1 prerequsite2    echo $VAR      (1)    VAR=4           (2)    echo $VAR         (3)    echo $$VAR         (4)    在代碼段1中,(1)的結果是3,顯然makefile利用自己的變量將$VAR擴展成3之后傳遞給這個echo這個shell命令。    (2)中,是一個獨立的shell命令自己第一了一個shell變量,名字也叫VAR,且其值為4,不會影響到makefile中的VAR。    (3)中,同(1),makefile中的變量VAR的值依然是3    (4)makefile將$$VAR先執行一次擴展得到如下shell命令:    echo $VAR然后交給shell去解釋執行,可是對于這個shell命令來說VAR是一個為定義的變量,因此輸出的結果就是個空行。makefile代碼段2:VAR=3   target: prerequsite1 prerequsite2    echo $VAR;/      (1')    VAR=4;/           (2')    echo $VAR;/         (3')    echo $$VAR         (4')        在代碼段2中,所有的shell命令都被連接起來了,那么執行的結果就有變化了:    (1')結果同(1),$VAR被替換成了3    (2')結果同(2)    (3')輸出3,因為雖然shell中有VAR變量,可是makefile先要進行擴展,擴展的結果就是echo 3。    (4')輸出4,因為makefile擴展結果為echo $VAR,而shell中已經有了變量VAR,且其值為4.    類似的例子還有如下:    makefile代碼片斷3:    SUBDIRS=tools examples src    target: prerequsite1 prerequsite2       for dir in $SUBDIRS; do $(MAKE) -C $$dir;done        make首先將這個命令擴展成:    for dir in tools examples src; do make -C $dir; done  然后交給shell解釋執行,可見dir就是一個shell中的變量。    總之,在makefile的shell命令中,黨要引用shell變量的時候,要使用$$VAR格式。    此外注意一點,在makefile中,$$還被用來做SECONDEXPANSION,即二次擴展,一般是作為prerequsites.    如:    .SECONDEXPANSION (要使用這個feature就的加上這一行)    main_objs := main.o try.o test.o    lib_objs := lib.o api.o    main lib:   $$($$@_objs)    $$($$@_objs)第一階段的擴展結果為$($@_objs),第2階段的擴展結果為:$@被替換為main lib,與_objs連接成main_objs lib_objs。加上外面$的擴展,就是$main_objs $lib_objs,最終結果為main.o try.o test.o lib.o api.o
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜川市| 清水河县| 客服| 武城县| 隆子县| 鄂温| 正镶白旗| 高碑店市| 江永县| 策勒县| 汉阴县| 柳河县| 赤城县| 滁州市| 宜兴市| 建昌县| 镇坪县| 广东省| 天津市| 天门市| 新绛县| 隆昌县| 德安县| 龙门县| 潼南县| 湾仔区| 曲沃县| 新和县| 富顺县| 泸水县| 西充县| 讷河市| 本溪| 郁南县| 乌拉特中旗| 青岛市| 晋宁县| 台北县| 台北县| 芦山县| 安阳市|