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

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

makefile

Posted on 2009-06-01 11:12 Prayer 閱讀(248) 評(píng)論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX
一、Makefile里有什么?

Makefile里主要包含了五個(gè)東西:顯式規(guī)則、隱晦規(guī)則、變量定義、文件指示和注釋。

1、顯式規(guī)則。顯式規(guī)則說明了,如何生成一個(gè)或多的的目標(biāo)文件。這是由Makefile的書寫者明顯指出,要生成的文件,文件的依賴文件,生成的命令。

2、隱晦規(guī)則。由于我們的make有自動(dòng)推導(dǎo)的功能,所以隱晦的規(guī)則可以讓我們比較粗糙地簡(jiǎn)略地書寫Makefile,這是由make所支持的。

3、變量的定義。在Makefile中我們要定義一系列的變量,變量一般都是字符串,這個(gè)有點(diǎn)你C語言中的宏,當(dāng)Makefile被執(zhí)行時(shí),其中的變量都會(huì)被擴(kuò)展到相應(yīng)的引用位置上。

4、文件指示。其包括了三個(gè)部分,一個(gè)是在一個(gè)Makefile中引用另一個(gè)Makefile,就像C語言中的include一樣;另一個(gè)是指根據(jù)某些情況指定Makefile中的有效部分,就像C語言中的預(yù)編譯#if一樣;還有就是定義一個(gè)多行的命令。有關(guān)這一部分的內(nèi)容,我會(huì)在后續(xù)的部分中講述。

5、注釋。Makefile中只有行注釋,和UNIX的Shell腳本一樣,其注釋是用“#”字符,這個(gè)就像C/C++中的“//”一樣。如果你要在你的Makefile中使用“#”字符,可以用反斜框進(jìn)行轉(zhuǎn)義,如:“\#”。

最后,還值得一提的是,在Makefile中的命令,必須要以[Tab]鍵開始。


二、Makefile的文件名

默認(rèn)的情況下,make命令會(huì)在當(dāng)前目錄下按順序找尋文件名為“GNUmakefile”、“makefile”、“Makefile”的文件,找到了解釋這個(gè)文件。在這三個(gè)文件名中,最好使用“Makefile”這個(gè)文件名,因?yàn)椋@個(gè)文件名第一個(gè)字符為大寫,這樣有一種顯目的感覺。最好不要用“GNUmakefile”,這個(gè)文件是GNU的make識(shí)別的。有另外一些make只對(duì)全小寫的“makefile”文件名敏感,但是基本上來說,大多數(shù)的make都支持“makefile”和“Makefile”這兩種默認(rèn)文件名。

當(dāng)然,你可以使用別的文件名來書寫Makefile,比如:“Make.Linux”,“Make.Solaris”,“Make.AIX”等,如果要指定特定的Makefile,你可以使用make的“-f”和“--file”參數(shù),如:make -f Make.Linux或make --file Make.AIX。


三、引用其它的Makefile

在Makefile使用include關(guān)鍵字可以把別的Makefile包含進(jìn)來,這很像C語言的#include,被包含的文件會(huì)原模原樣的放在當(dāng)前文件的包含位置。include的語法是:

    include <filename>;

    filename可以是當(dāng)前操作系統(tǒng)Shell的文件模式(可以保含路徑和通配符)

在include前面可以有一些空字符,但是絕不能是[Tab]鍵開始。include和<filename>;可以用一個(gè)或多個(gè)空格隔開。舉個(gè)例子,你有這樣幾個(gè)Makefile:a.mk、b.mk、c.mk,還有一個(gè)文件叫foo.make,以及一個(gè)變量$(bar),其包含了e.mk和f.mk,那么,下面的語句:

    include foo.make *.mk $(bar)

    等價(jià)于:

    include foo.make a.mk b.mk c.mk e.mk f.mk

make命令開始時(shí),會(huì)把找尋include所指出的其它Makefile,并把其內(nèi)容安置在當(dāng)前的位置。就好像C/C++的#include指令一樣。如果文件都沒有指定絕對(duì)路徑或是相對(duì)路徑的話,make會(huì)在當(dāng)前目錄下首先尋找,如果當(dāng)前目錄下沒有找到,那么,make還會(huì)在下面的幾個(gè)目錄下找:

    1、如果make執(zhí)行時(shí),有“-I”或“--include-dir”參數(shù),那么make就會(huì)在這個(gè)參數(shù)所指定的目錄下去尋找。
    2、如果目錄<prefix>;/include(一般是:/usr/local/bin或/usr/include)存在的話,make也會(huì)去找。

如果有文件沒有找到的話,make會(huì)生成一條警告信息,但不會(huì)馬上出現(xiàn)致命錯(cuò)誤。它會(huì)繼續(xù)載入其它的文件,一旦完成makefile的讀取,make會(huì)再重試這些沒有找到,或是不能讀取的文件,如果還是不行,make才會(huì)出現(xiàn)一條致命信息。如果你想讓make不理那些無法讀取的文件,而繼續(xù)執(zhí)行,你可以在include前加一個(gè)減號(hào)“-”。如:

    -include <filename>;
    其表示,無論include過程中出現(xiàn)什么錯(cuò)誤,都不要報(bào)錯(cuò)繼續(xù)執(zhí)行。和其它版本make兼容的相關(guān)命令是sinclude,其作用和這一個(gè)是一樣的。


四、環(huán)境變量 MAKEFILES 

如果你的當(dāng)前環(huán)境中定義了環(huán)境變量MAKEFILES,那么,make會(huì)把這個(gè)變量中的值做一個(gè)類似于include的動(dòng)作。這個(gè)變量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是,從這個(gè)環(huán)境變中引入的Makefile的“目標(biāo)”不會(huì)起作用,如果環(huán)境變量中定義的文件發(fā)現(xiàn)錯(cuò)誤,make也會(huì)不理。

但是在這里我還是建議不要使用這個(gè)環(huán)境變量,因?yàn)橹灰@個(gè)變量一被定義,那么當(dāng)你使用make時(shí),所有的Makefile都會(huì)受到它的影響,這絕不是你想看到的。在這里提這個(gè)事,只是為了告訴大家,也許有時(shí)候你的Makefile出現(xiàn)了怪事,那么你可以看看當(dāng)前環(huán)境中有沒有定義這個(gè)變量。


五、make的工作方式

GNU的make工作時(shí)的執(zhí)行步驟入下:(想來其它的make也是類似)

    1、讀入所有的Makefile。
    2、讀入被include的其它Makefile。
    3、初始化文件中的變量。
    4、推導(dǎo)隱晦規(guī)則,并分析所有規(guī)則。
    5、為所有的目標(biāo)文件創(chuàng)建依賴關(guān)系鏈。
    6、根據(jù)依賴關(guān)系,決定哪些目標(biāo)要重新生成。
    7、執(zhí)行生成命令。

1-5步為第一個(gè)階段,6-7為第二個(gè)階段。第一個(gè)階段中,如果定義的變量被使用了,那么,make會(huì)把其展開在使用的位置。但make并不會(huì)完全馬上展開,make使用的是拖延戰(zhàn)術(shù),如果變量出現(xiàn)在依賴關(guān)系的規(guī)則中,那么僅當(dāng)這條依賴被決定要使用了,變量才會(huì)在其內(nèi)部展開。

當(dāng)然,這個(gè)工作方式你不一定要清楚,但是知道這個(gè)方式你也會(huì)對(duì)make更為熟悉。有了這個(gè)基礎(chǔ),后續(xù)部分也就容易看懂了。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            老司机久久99久久精品播放免费| 亚洲无线视频| 欧美xart系列高清| 老牛影视一区二区三区| 欧美成人激情视频| 欧美日韩一区免费| 国产欧美日韩视频| 激情一区二区三区| 亚洲黄色成人网| 亚洲无限av看| 玖玖综合伊人| 亚洲精品1区2区| 最新亚洲激情| 亚洲欧美日韩综合国产aⅴ | 最新国产の精品合集bt伙计| 日韩视频不卡中文| 欧美一区二区三区免费观看视频 | 国产精品豆花视频| 欧美视频你懂的| 狠狠综合久久| 亚洲一二区在线| 久久人人97超碰精品888| 亚洲精品123区| 欧美一区二区视频在线观看2020 | 亚洲直播在线一区| 欧美不卡视频一区发布| 国产欧美日韩精品专区| 亚洲激情婷婷| 久久久久久一区二区| 亚洲精品女av网站| 亚洲欧美日本国产有色| 欧美a级片网| 国内精品伊人久久久久av一坑| 在线视频你懂得一区二区三区| 久久女同精品一区二区| 亚洲一区在线播放| 欧美日韩dvd在线观看| 一区二区三区中文在线观看| 亚洲专区在线| 日韩亚洲欧美综合| 欧美极品一区| 亚洲精品久久7777| 欧美xart系列高清| 久久不见久久见免费视频1| 欧美午夜免费电影| 一区二区三区高清不卡| 欧美成人综合网站| 久久精品人人爽| 国内自拍一区| 久久一本综合频道| 篠田优中文在线播放第一区| 欧美视频日韩视频| 亚洲午夜在线观看视频在线| 亚洲精品你懂的| 欧美成人黑人xx视频免费观看| 国内精品免费午夜毛片| 久久精品麻豆| 久久高清免费观看| 韩国av一区二区三区| 久久另类ts人妖一区二区| 午夜欧美视频| 极品日韩久久| 亚洲福利在线观看| 欧美精品日韩综合在线| avtt综合网| 亚洲天堂偷拍| 国产一级揄自揄精品视频| 久久婷婷成人综合色| 久久久久九九九九| 亚洲理伦在线| 一区二区欧美亚洲| 国产欧美一区二区三区沐欲| 久久精品人人做人人爽电影蜜月| 欧美专区日韩视频| 亚洲国产精品久久久久秋霞不卡| 久久野战av| 91久久一区二区| 日韩视频二区| 国产欧美日本| 欧美第一黄色网| 欧美日韩一区二区三区在线观看免 | 最新精品在线| 国产精品进线69影院| 久久久91精品国产一区二区精品| 久久黄色网页| 亚洲美女在线看| 亚洲中字在线| 亚洲人成啪啪网站| 亚洲专区在线| 亚洲激情一区二区三区| 一区二区三区欧美在线| 国模私拍一区二区三区| 亚洲国产欧美一区二区三区同亚洲 | 国产精品一二三四| 六月婷婷一区| 欧美视频一区二区三区…| 久久蜜桃资源一区二区老牛 | 久久久久久综合| 亚洲免费在线播放| 玖玖国产精品视频| 欧美一区二区三区在| 欧美激情精品久久久久久黑人 | 日韩视频一区二区三区在线播放| 亚洲欧美日韩第一区| 亚洲毛片视频| 久久精品国产精品 | 在线观看亚洲视频| 亚洲午夜国产一区99re久久 | 黑人极品videos精品欧美裸| 亚洲精品在线视频| 亚洲国产成人高清精品| 亚洲视频精品| 亚洲美女91| 老司机一区二区三区| 久久久国产成人精品| 国产精品欧美久久| 亚洲精品视频在线观看网站| 在线日韩视频| 久久精品二区| 久色婷婷小香蕉久久| 国产欧美日韩综合一区在线播放| 日韩午夜激情av| 99精品欧美一区二区三区| 欧美va亚洲va日韩∨a综合色| 久久在线观看视频| 最新国产成人av网站网址麻豆 | 美女精品网站| 国产一区二区成人| 亚洲女性喷水在线观看一区| 99ri日韩精品视频| 欧美激情在线| 日韩小视频在线观看专区| 亚洲毛片在线| 欧美日韩国产美| 亚洲精品在线观看视频| 艳女tv在线观看国产一区| 欧美久久在线| 一本色道**综合亚洲精品蜜桃冫| 日韩系列在线| 国产精品v一区二区三区| 亚洲一区二区黄| 久久精品99国产精品日本| 国产婷婷成人久久av免费高清| 性欧美xxxx视频在线观看| 久久精品国产清高在天天线| 国产在线精品一区二区夜色| 久久久免费观看视频| 亚洲国产天堂网精品网站| 中日韩高清电影网| 国产欧美日韩免费看aⅴ视频| 久久精品国产第一区二区三区| 免费亚洲电影在线| 一本久久a久久精品亚洲| 国产精品久久久久久一区二区三区 | 欧美另类99xxxxx| 亚洲美女av网站| 欧美亚洲色图校园春色| 黑人巨大精品欧美一区二区| 巨胸喷奶水www久久久免费动漫| 欧美激情一区二区三级高清视频 | 免费观看一区| 亚洲一区二区三区在线看| 国产日韩精品在线| 免费视频一区二区三区在线观看| 99精品热6080yy久久| 久久精品国产99国产精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲永久在线| 一区在线免费| 欧美视频导航| 久久久综合精品| 亚洲私人影院在线观看| 欧美高清在线精品一区| 午夜亚洲福利在线老司机| 亚洲国产成人av好男人在线观看| 欧美体内she精视频| 麻豆精品网站| 午夜日韩视频| 国产精品免费观看在线| 欧美午夜免费电影| 欧美在线视频免费播放| 亚洲精品中文字幕在线| 久久婷婷综合激情| 亚洲一区二区在线免费观看视频 | 久久免费99精品久久久久久| 日韩一级免费观看| 欧美国产日产韩国视频| 欧美在线一区二区| 亚洲午夜视频| 99国产精品一区| 亚洲第一精品影视| 国产欧美一区二区三区久久 | 亚洲激情电影在线| 国产日韩专区| 国产精品人人爽人人做我的可爱| 免费在线视频一区| 久久婷婷av| 久久免费精品视频| 久久影视精品| 老司机精品导航|