1. 程式人生 > >《Makefile 進階之路三》 這裏有你對Makefile所有的暢想

《Makefile 進階之路三》 這裏有你對Makefile所有的暢想

定義 提取 出錯 內容 變量定義 依賴關系 描述 -- ...

  前兩篇介紹了Makefile的基本語法和一些小技巧,如果你僅僅是為了了解Makefile的知識,那麽就可以到此為止了。以下將介紹Makefile的細節綜述,帶領真正需要深刻了解Makefile的同誌一步步修煉成仙。為了擺脫誤人子弟的嫌疑,我貼出Makefiel手冊,自行選擇閱讀。手冊 提取碼yaff

好的,下面是從入門到放棄教程。

下面的部分內容可能前面已經講過,但是還是希望新手再次閱讀,因為手冊描述十分的清晰經典,另外,聽說,Makefile編寫出神入化,能夠呼風喚雨,白日飛升 :)

-------------------------以下為正文

3.1 Makefile內容

  完整的Makefile總共包括五部分內容:顯式規則、隱含規則、變量定義、指示符和註釋。

  1. 顯式規則:它描述了在何種情況下如何更新一個或者多個被稱為目標的文件(Makefile 的目標文件)。書寫 Makefile 時需要明確地給出目標文件、目標的依賴文件列表以及更新目標文件所需要的命令(有些規則沒有命令,這樣的規則只是純粹的描述了文件之間的依賴關系)。

  2. 隱含規則:它是make根據一類目標文件(典型的是根據文件名的後綴)而自動推導出來的規則。make根據目標文件的名,自動產生目標的依賴文件並使用默認的命令來對目標進行更新(建立一個規則)。

  3. 變量定義:使用一個字符或字符串代表一段文本串,當定義了一個變量以後,Makefile後續在需要使用此文本串的地方,通過引用這個變量來實現對文本串的使用。

  4. Makefile 指示符:指示符指明在 make 程序讀取 makefile 文件過程中所要執行的一個動作。

    1.讀取一個文件,讀取給定文件名的文件,將其內容作為makefile文件的一部分。

    2.決定(通常是根據一個變量的得值)處理或者忽略Makefile中的某一特定部分。

    3.定義一個多行變量

  5. 註釋:Makefile 中“#”字符後的內容被作為是註釋內容(和 shell 腳本一樣)處理。

3.2 Makefile指示符(include)

  就像寫C程序一樣,我們不可能把所有的代碼都寫入一個文件,這樣不僅結構復雜,而且容易出錯。寫Makefile也是這樣,如果一個Makefile文件太大,或者有一部分Makefile文件功能獨立,我們可以單獨將它寫進一個Makefile文件,然後在需要使用它的地方使用“include”將它引用過來。include”指示符告訴 make 暫停讀取當前的 Makefile,而轉去讀取“include”指定的一個或者多個文件,完成以後再繼續當前 Makefile 的讀取。書寫格式如下:

  include FILENAMES...

  FILENAMES是shell所支持的文件名(可以使用通配符), 指示符“include”所在的行可以一個或者多個空格(make程序在處理時將忽略這些空格)開始,切忌不能以[Tab]字符開始(如果一行以[Tab]字符開始make程序將此行作為一個命令行來處理)。

例:存在三個".mk"文件,a.mk b.mk c.mk

 

《Makefile 進階之路三》 這裏有你對Makefile所有的暢想