<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    下面是定義變量的一般方法:
      VARNAME=some_text [...]
    把變量用括號(hào)起來(lái),并在前面加上"$"符號(hào),就可以引用變量的值:
      $(VARNAME)
    變量一般都在makefile的頭部定義,并且,按照慣例,所有的makefile變量都應(yīng)該大寫(xiě).

    在makefile中使用變量
    OBJS = howdy.o helper.o
    HDRS = helper.h
    howdy: $(OBJS) $(HDRS)
        gcc $(OBJS) -o howdy
    helper.o: helper.c $(HDRS)
        gcc -c helper.c
    howdy.o: howdy.c
        gcc -c howdy.c
    hello: hello.c
        gcc hello.c -o hello
    all: howdy hello
    clean:
        rm howdy hello *.o

    make使用兩種變量:遞歸展開(kāi)變量和簡(jiǎn)單展開(kāi)變量.遞歸展開(kāi)變量在引用時(shí)逐層展開(kāi),即如果在展開(kāi)式中包含了對(duì)其他變量的引用,則這些變量也將被展開(kāi),直到?jīng)]有需要展開(kāi)的變量為止,這就是所謂的遞歸展開(kāi).

    考慮下面的變量定義:
      CC = gcc
      CC = $(CC) -o
    CC在被引用時(shí)遞歸展開(kāi),從而陷入一個(gè)無(wú)限循環(huán)中:CC將展開(kāi)為$(CC)的值,從而永遠(yuǎn)也讀不到-o選項(xiàng).

    為了避免這個(gè)問(wèn)題,可以使用簡(jiǎn)單展開(kāi)變量.與遞歸展開(kāi)變量在引用時(shí)展開(kāi)不同,簡(jiǎn)單展開(kāi)變量在定義處展開(kāi),并且只展開(kāi)一次,從而取消了變量的嵌套引用.在定義時(shí),其語(yǔ)法與遞歸展開(kāi)變量有細(xì)微的不同:
      CC := gcc -o
      CC += -O2
    第一個(gè)定義使用":="設(shè)置CC的值為gcc -o, 第二個(gè)定義使用"+="在前面定義的CC后附加了-O2,從而CC最終的值是gcc -o -O2.

    除用戶(hù)定義變量外,make也允許使用環(huán)境變量,自動(dòng)變量和預(yù)定義變量.使用環(huán)境變量非常簡(jiǎn)單.在啟動(dòng)時(shí),make讀取已定義的環(huán)境變量,并且創(chuàng)建與之同名同值的變量.但是,如果makefile中有同名的變量,則這個(gè)變量將取代與之相應(yīng)的環(huán)境變量,所以應(yīng)當(dāng)注意這一點(diǎn).

                                    自動(dòng)變量
    變量                          說(shuō)明
    $@                            規(guī)則的目標(biāo)所對(duì)應(yīng)的文件名
    $<                            規(guī)則中的第一個(gè)相關(guān)文件名
    $^                            規(guī)則中所有相關(guān)文件的列表,以空格為分界符
    $?                            規(guī)則中日期新于目標(biāo)的所有相關(guān)文件的列表,以空格為分隔符
    $(@D)                       目標(biāo)文件的目錄部分(如果目標(biāo)在子目錄中)
    $(@F)                       目標(biāo)文件的文件名部分(如果目標(biāo)在子目錄中)

                      用于文件名和標(biāo)志的預(yù)定義變量
    變量                     說(shuō)明
    AR                       歸檔維護(hù)程序,默認(rèn)值=ar
    AS                       匯編程序,默認(rèn)值=as
    CC                       C編譯程序,默認(rèn)值=cc
    CPP                       C預(yù)處理程序,默認(rèn)值= cpp
    RM                       文件刪除程序,默認(rèn)值="rm -f"
    ARFLAGS                   傳給歸檔維護(hù)程序的標(biāo)志,默認(rèn)值=rv
    ASFLAGS                   傳給匯編程序的標(biāo)志,沒(méi)有默認(rèn)值
    CFLAGS                   傳給C編譯器的標(biāo)志,沒(méi)有默認(rèn)值
    CPPFLAGS                 傳給C預(yù)處理程序的標(biāo)志,沒(méi)有默認(rèn)值
    LDFLAGS                   傳給鏈接程序(ld)的標(biāo)志,沒(méi)有默認(rèn)值
    posted on 2005-08-04 21:54 ivaneeo 閱讀(282) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): GNU牛力
    主站蜘蛛池模板: 亚洲国产精品成人精品小说| 亚洲精品无码永久在线观看你懂的| 亚洲精品中文字幕无码AV| 日本人成在线视频免费播放| 亚洲成年轻人电影网站www | 黄页网站在线观看免费高清| 亚洲福利电影在线观看| 黄+色+性+人免费| 亚洲一区二区三区乱码在线欧洲| 一二三四免费观看在线电影| 亚洲综合偷自成人网第页色| 青青青青青青久久久免费观看 | free哆拍拍免费永久视频 | 亚洲国产成人久久一区WWW| 中美日韩在线网免费毛片视频 | 日韩免费的视频在线观看香蕉| 麻豆亚洲AV永久无码精品久久| 永久免费在线观看视频| 国产 亚洲 中文在线 字幕| 免费一级毛片女人图片| 中文字幕免费在线看电影大全| 亚洲伊人tv综合网色| 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 国产日韩在线视频免费播放| 亚洲精品无码国产| 四虎最新永久免费视频| 色偷偷亚洲男人天堂| 中文字幕专区在线亚洲| 91频在线观看免费大全| 日韩久久无码免费毛片软件 | 免费人成视频在线| 免费人成视频在线观看免费| 亚洲av无码一区二区三区网站 | 成人免费一区二区无码视频| 十八禁的黄污污免费网站| 日本久久久久亚洲中字幕| 日本一道一区二区免费看 | 亚洲成在人天堂在线| 日韩中文字幕在线免费观看| 一个人看的www免费视频在线观看| 亚洲制服丝袜在线播放|