青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

makefile筆記

    注:這里的makefile指的是gnu makefile,可能跟其他的makefile略有不同。若有不同,我盡量提及。而且這也不算是一篇教程,只是我在用make的時候記得一些筆記。推薦看<>。另外網上有一篇《跟我一起寫makefile》也很好。

    makefile規則分為三部分:目標(target)、條件(prerequisite)、命令(commands)。
    target:prereq1...prereqn
       commans

1.自動變量

    $@:代表目標文件名
    $%:The filename element of an archive member specification.
    $<:條件列表中的第一個條件的文件名
    $?:條件列表中所有比目標新的那些條件的文件名,以空格分割
    $^:條件列表中所有條件的文件名,以空格分割。如果列表中有重復的條件,則會被刪掉。
    $+:跟$^類似,區別在不會去掉重復的條件。
    $*:目標文件名的詞干部分(去掉擴展名剩下的部分)

    自動變量只能用在規則的命令部分,因為這些變量是make匹配到規則的目標和條件后才設置值的。
    舉個例子說明一下。假設某個工程有三個文件:cal.cpp,cal.h,test.cpp(下面再有說明時也以此為例)。makefile如下:
        OBJS=test.o cal.o cal.o

        TARGET=cal.exe

        all:$(TARGET)

        $(TARGET):$(OBJS)
            @echo $@
            @echo $<
            @echo $^
            @echo $?
            @echo $+
            @echo $%
            @echo $*
    輸出為:
            cal.exe
            test.o
            test.o cal.o
            test.o cal.o
            test.o cal.o cal.o
            ECHO is off.
            ECHO is off.
    至于最后兩個為什么會這樣輸出我還不太清楚,有清楚地麻煩告訴我一下這兩個怎么用。先謝謝了。

2.模式規則
    模式規則也是規則,也要滿足make的規則形式,分為目標、條件、命令三個部分。只是目標、條件中的文件名的詞干部分用%代替了,這個%跟shell中的*類似,代表任意長度的字符串。還以上面說得工程為例,makefile如下:
        CPPFLAGS= -g
        CC=g++

        test:cal.o test.o
        cal.o:cal.h
    make的時候,輸出如下內容:
        g++  -g  -c -o test.o test.cpp
        g++  -g  -c -o cal.o cal.cpp
        g++   test.o cal.o   -o test
    這個makefile之所以能夠正確被處理,是因為make內建了一些規則。例如:
        %.o: %.c
            $(COMPILE.c) $(OUTPUT_OPTION) $<
        %.o: %.cpp
            $(COMPILE.cpp) $(OUTPUT_OPTION) $<
    以及
        %: %.o
            $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
    這些規則里面的$變量都是make的標準變量(還有上面的CPPFLAGS,CC也是。另外還有一些別的),這些標準變量有的有默認值(例如CC的默認值是cc),有的沒有。make在處理makefile文件時,如果沒有顯式的規則,那么就會查找是否有隱式的可用規則,如果找到就會利用隱式規則來生成目標。

    2.1靜態模式規則
       靜態模式規則指的是類似下面的規則:
        $(OBJECTS): %.o: %c
            $(CC) -c $(CFLAGS) $< -o $@
       這跟上面的模式規則類似,不同在于將規則的適用范圍限制在了$(OBJECTS)。也就是只針對這些目標來應用規則。

    2.2后綴規則
       后綴規則是指用一個或者兩個后綴連接起來作為目標,同時省略掉條件部分。如下:
       .c.o:
           $(COMPILE.c) $(OUTPUT_OPTION) $<
       容易混淆的地方是條件后綴在前,目標后綴在后。
       這跟上面的規則:
           %.o: %.c
               $(COMPILE.c) $(OUTPUT_OPTION) $<
       功能是一樣的,只是為了兼容一些老的make系統。
       需要注意的是,這里用到的后綴必須在已知后綴列表里面。有個專用的目標(target)——.SUFFIXES——用來設定后綴列表。例如:.SUFFIXES:.pdf .o .c 。而.SUFFIXES:(也就是后面列表為空)用來清空后綴列表。


3.自動依賴生成
    還沒發現這個在實際應用中有多方便,有興趣的可以看看我開始推薦的兩個文檔。

posted on 2008-02-24 11:23 季陽 閱讀(622) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿(2)

隨筆檔案(12)

搜索

最新隨筆

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲黄页视频免费观看| 久久久亚洲一区| 亚洲国产日韩在线| 欧美a级大片| 亚洲免费av网站| 在线亚洲+欧美+日本专区| 欧美亚洲第一页| 欧美一区二区视频观看视频| 午夜在线不卡| 亚洲国产精品成人久久综合一区| 亚洲国产第一页| 欧美日韩视频在线第一区| 亚洲免费影院| 久久精品国产77777蜜臀| 136国产福利精品导航网址应用| 亚洲成人在线视频播放| 麻豆成人在线观看| 夜夜精品视频| 午夜国产精品视频| 亚洲国产成人av| 在线一区二区三区四区| 国产真实精品久久二三区 | 欧美日韩视频在线一区二区观看视频| 日韩视频免费观看高清在线视频 | 校园春色综合网| 美女性感视频久久久| 一区二区三区**美女毛片| 午夜精品久久一牛影视| 亚洲精品一级| 午夜久久久久久| 最新国产成人在线观看| 亚洲天堂免费观看| 91久久国产综合久久蜜月精品 | 一本色道久久综合亚洲二区三区| 国产精品视频精品视频| 欧美jjzz| 国产一区二区黄色| 99精品视频免费全部在线| 一区免费在线| 亚洲尤物在线视频观看| 99精品免费网| 久久免费国产| 久久精品综合| 国产精品另类一区| 亚洲国产精品ⅴa在线观看| 国产精品三区www17con| 日韩网站免费观看| 亚洲国产精品成人综合| 欧美一区=区| 亚洲欧美制服另类日韩| 欧美精品色网| 亚洲第一级黄色片| 好看的亚洲午夜视频在线| 亚洲一区二区三区四区视频| 99精品视频一区二区三区| 老司机午夜精品视频在线观看| 亚洲欧美一区二区三区久久| 欧美日韩国产精品一卡| 亚洲欧洲视频在线| 亚洲日本乱码在线观看| 久久综合国产精品| 久久伊伊香蕉| 国内精品视频666| 性欧美xxxx大乳国产app| 久久xxxx| 国内精品免费在线观看| 午夜久久美女| 久久午夜电影| 亚洲第一成人在线| 久久这里只精品最新地址| 免播放器亚洲| 亚洲激情在线观看| 欧美国产综合| 亚洲毛片在线观看| 亚洲一区二区三区三| 欧美日韩国产丝袜另类| 亚洲精品日本| 亚洲一区二区三区久久| 国产精品视频网站| 午夜免费日韩视频| 毛片av中文字幕一区二区| 在线精品高清中文字幕| 免费在线一区二区| 日韩亚洲一区在线播放| 亚洲欧美精品在线| 韩日精品在线| 欧美第一黄色网| 一本色道久久精品| 久久精品国产99精品国产亚洲性色| 国产性猛交xxxx免费看久久| 久久国产日韩| 91久久精品国产| 亚洲欧美一区二区三区久久| 狠狠色狠狠色综合系列| 欧美高清视频在线| 亚洲欧美日韩精品在线| 欧美成人a视频| 亚洲一二三级电影| 精久久久久久久久久久| 欧美精品在线免费播放| 午夜精品视频在线| 亚洲国产精彩中文乱码av在线播放| 一区二区国产在线观看| 国产一区二区三区免费在线观看| 久久久久久欧美| 中文一区在线| 欧美国产日韩精品| 欧美一二三视频| 亚洲日本激情| 国产中文一区二区三区| 欧美理论视频| 久久精品国产久精国产思思| 日韩一级免费观看| 老司机精品久久| 午夜精品一区二区三区在线视| 尤物精品在线| 国产欧美日韩精品一区| 欧美激情一区二区在线 | 久久国产福利| 一区二区三区不卡视频在线观看| 久久久精品一区二区三区| 一区二区三区四区五区精品视频 | 欧美激情综合在线| 久久成人免费网| 亚洲一区二区三区国产| 亚洲激情视频在线播放| 久久这里只有精品视频首页| 午夜精品福利在线| 一本色道久久综合亚洲二区三区| 黄色一区二区在线| 国产私拍一区| 国产精品入口麻豆原神| 欧美久久综合| 欧美精品一区二区三区蜜臀| 欧美77777| 久久综合色播五月| 久久久久久夜| 久久精品噜噜噜成人av农村| 午夜精品久久久久| 亚洲欧美日本国产专区一区| 一区二区高清在线观看| 亚洲人成在线播放| 亚洲精品美女在线观看| 91久久精品一区二区别| 欧美mv日韩mv亚洲| 欧美风情在线观看| 欧美国产在线电影| 亚洲国产精品va| 亚洲国产成人高清精品| 亚洲二区在线观看| 91久久夜色精品国产网站| 欧美激情一区二区三区高清视频 | 狼狼综合久久久久综合网| 久久精品国产久精国产一老狼| 欧美在线观看天堂一区二区三区| 午夜精品www| 久久国产精品99国产精| 久久精品国产一区二区三| 久久精品亚洲精品| 蜜桃av一区二区三区| 亚洲国产另类久久久精品极度| 亚洲国产二区| 这里只有精品丝袜| 久久成人久久爱| 免费亚洲电影| 欧美视频日韩视频| 国内精品99| 亚洲精品久久久蜜桃| 亚洲嫩草精品久久| 久久成人一区二区| 欧美99久久| 日韩视频三区| 午夜宅男欧美| 欧美国产综合| 国产欧美成人| 亚洲激情婷婷| 亚洲欧美国产视频| 欧美成人精品在线播放| 夜夜嗨av一区二区三区网页| 午夜精品在线观看| 欧美国产日韩一区二区三区| 国产精品国色综合久久| 激情综合网址| 亚洲一区二区在线| 另类欧美日韩国产在线| 99www免费人成精品| 久久久久久久综合| 国产精品初高中精品久久| 在线 亚洲欧美在线综合一区| 在线一区二区日韩| 噜噜爱69成人精品| 亚洲午夜一区二区| 欧美jizzhd精品欧美喷水| 国产精品揄拍500视频| 亚洲免费成人av电影| 久久综合久久88| 亚洲免费小视频| 欧美日韩不卡合集视频| 在线观看一区视频| 久久久国产精品亚洲一区|