• <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>
            一、Makefile里有什么?

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

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

            2、隱晦規則。由于我們的make有自動推導的功能,所以隱晦的規則可以讓我們比較粗糙地簡略地書寫Makefile,這是由make所支持的。

            3、變量的定義。在Makefile中我們要定義一系列的變量,變量一般都是字符串,這個有點你C語言中的宏,當Makefile被執行時,其中的變量都會被擴展到相應的引用位置上。

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

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

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


            二、Makefile的文件名

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

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


            三、引用其它的Makefile

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

                include <filename>;

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

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

                include foo.make *.mk $(bar)

                等價于:

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

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

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

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

                -include <filename>;
                其表示,無論include過程中出現什么錯誤,都不要報錯繼續執行。和其它版本make兼容的相關命令是sinclude,其作用和這一個是一樣的。
            Posted on 2007-04-17 10:55 艾凡赫 閱讀(3331) 評論(0)  編輯 收藏 引用 所屬分類: C++
            久久精品一本到99热免费| 久久久精品久久久久影院| 欧美亚洲另类久久综合| 久久精品一区二区三区中文字幕 | 72种姿势欧美久久久久大黄蕉| 一本一道久久精品综合| 亚洲精品97久久中文字幕无码| 色诱久久久久综合网ywww| 品成人欧美大片久久国产欧美| 伊人久久综合无码成人网| 国产精品美女久久久网AV| 午夜天堂av天堂久久久| 理论片午午伦夜理片久久 | 麻豆一区二区99久久久久| 久久综合久久综合九色| 久久亚洲中文字幕精品一区| 青青青伊人色综合久久| 久久久亚洲欧洲日产国码二区| 香蕉99久久国产综合精品宅男自| 久久亚洲精品中文字幕三区| 人妻精品久久无码区| 久久久久久久97| 亚洲国产香蕉人人爽成AV片久久 | 91久久精品无码一区二区毛片| 香蕉久久夜色精品升级完成| 一级a性色生活片久久无少妇一级婬片免费放 | 婷婷国产天堂久久综合五月| 久久露脸国产精品| 久久久久18| 欧美性大战久久久久久| 久久亚洲国产精品123区| 久久久久亚洲AV综合波多野结衣| A级毛片无码久久精品免费| 99久久亚洲综合精品网站| 久久97精品久久久久久久不卡| 精品免费tv久久久久久久| 国产精品岛国久久久久| 久久久国产精品福利免费| 久久九九亚洲精品| 欧美午夜A∨大片久久 | 久久人人爽人人爽人人AV东京热|