GNU make中文手冊 翻譯整理:徐海兵

2004-09-11

 

 


 

 

關於本書

本文瑾獻給所有熱愛Linux的程序員!本中文文檔版權所有。

本文比較完整的講述GNU make工具,涵蓋GNU make的用法、語法。魂時重點討論如何為一個工程編寫Makefile。作為一個Linux程序員,make工具的使用以及編寫Makefile是必需的。系統、詳細講述make的中文資料比較少,出於對廣大中文Linuxer的支持,本人在工作之餘,花了18個多月時間完成對「info make」的翻譯整理,完成這個中文版手冊。本書不是一個純粹的語言翻譯版本,其中對GNU make的一些語法和用法根據我個人的工作經驗進行了一些詳細分析和說明,也加入了一些個人的觀點和實踐總結。本書的所有的例子都可以在支持V3.8版本的GNU make的系統中正確執行。

批於個人水平限制,本文在一些地方存在描述不準確之處。懇請大家在閱讀過程中,提出您寶貴的意見,也是對我個人的幫助。我的個人電子郵箱地址:xhbdahai@126.com。非常願意和大家交流!共魂學習。

閱讀本書之前,讀者應該對GNU的工具鏈和Linux的一些常用編程工具有一定的瞭解。諸如:gccasarldyacc等;魂時在書寫Makefile時,需要能夠進行一些基本的shell編程。這些工具是維護一個工程的基礎。如果大家對這些工具的用法不是很熟悉,可參考項目資料。

閱讀本文的幾點建議:

1.        如果之前你對GNU make沒有瞭解、當前也不想深入的學習GNU make的讀者。可只閱讀本文各章節前半部分的內容(作為各章節的基礎知識)。

2.        如果你已經對GNU make比較熟悉,你更需要關心此版本的新增特點、功能、和之前版本不兼容之處;也可以作為開發過程過程的參考手冊。

3.        之前你對GNU make沒有概念、或者剛開始接觸,本身又想成為一個Linux下的專業程序員,那麼建議:完整學習本文的各個章節,包括了基礎知識和高級用法、技巧。它會為你在Linux下的工程開發、工程管理提供非常有用的幫助。

4.        此中文文檔當前版本v1.5,本文的所有勘誤和最新版本可在主頁 http://xhbdahai.cublog.cn 上獲取!!

 

謝謝

                                                       徐海兵    2005-12-31

 

第一章:概述

1.1   概述

1.2   準備知識

第二章:GNU make 介纏

2.1   Makefile簡介

2.2   Makefile規則介纏

2.3   簡單的示例

2.4   make如何工作

2.5   指定變量

2.6   自動推導規則

2.7   另類風格的makefile

2.8   清除工作目錄過程文件

第三章:Makefile 總述

3.1   Makefile的內容

3.2   makefile文件的命名

3.3   包含其它makefile文件

3.4   變量 MAKEFILES

3.5   變量 MAKEFILE_LIST

3.6   其他特殊變量

3.7   makefile文件的重建

3.8   重載另外一個makefile

3.9   make如何解析makefile文件

3.9.1  變量取值

3.9.2  條件語句

3.9.3  規則的定義

3.10  總結

第四章:Makefile的規則

4.1   一個例子

4.2   規則語法

4.3   依賴的類型

4.4   文件名使用通配符

4.4.1  統配符使用舉例

4.4.2  通配符存在的缺陷

4.4.3  函數wildcard

4.5   目錄搜尋

4.5.1  一般搜索(變量VPATH

4.5.2  選擇性搜索(關鍵字vpath

4.5.3  目錄搜索的機制

4.5.4  命令行和搜索目錄

4.5.5  隱含規則和搜索目錄

4.5.6  庫文件和搜索目錄

4.6   Makefile偽目標

4.7   強制目標(沒有命令或依賴的規則)

4.8   空目標文件

4.9   Makefile的特殊目標

4.10  多目標

4.11  多規則目標

4.12  靜態模式

4.12.1  靜態模式規則的語法

4.12.2  靜態模式和隱含規則

4.13  雙冒號規則

4.14  自動產生依賴

第五章:規則的命令

5.1   命令回顯

5.2   命令的執行

5.3   並發執行命令

5.4   命令執行的錯誤

5.5   中斷make的執行

5.6   make的遞歸執行

5.6.1  變量MAKE

5.6.2  變量和遞歸

5.6.3  命令行選項和遞歸

5.6.4  -w選項

5.7   定義命令包

5.8   空命令

第六章:Makefile中的變量

6.1   變量的引用

6.2   兩種變量定義(賦值

6.2.1  遞歸展開式變量

6.2.2  直接展開式變量

6.2.3  如何定義一個空格

6.2.4  ?=」操作符

6.3   變量的高級用法

6.3.1  變量的替換引用

6.3.2  變量的套嵌引用

6.4   變量取值

6.5   如何設瞞變量

6.6   追加變量值

6.7   override 指示符

6.8   多行定義

6.9   系統環境變量

6.10  目標指定變量

6.11  模式指定變量

第七章:Makefile的條件執行

7.1   一個例子

7.2   條件判斷的基本語法

7.2.1  關鍵字「ifeq

7.2.2  關鍵字「ifneq

7.2.3  關鍵字「ifdef

7.2.4  關鍵字「ifndef

7.3   標記測試的條件語句

第八章:make的內嵌函數

8.1   函數的調用語法

8.2   文本處理函數

8.2.1   $(subst FROM,TO,TEXT)

8.2.2   $(patsubst PATTERN,REPLACEMENT,TEXT)

8.2.3   $(strip STRINT)

8.2.4   $(findstring FIND,IN)

8.2.5   $(filter PATTERN…,TEXT)

8.2.6   $(filter-out PATTERN...,TEXT)

8.2.7   $(sort LIST)

8.2.8   $(word N,TEXT)

8.2.9   $(wordlist S,E,TEXT)

8.2.10  $(words TEXT)

8.2.11  $(firstword NAMES…)

8.3   文件名處理函數

8.3.1   $(dir NAMES…)

8.3.2   $(notdir NAMES…)

8.3.3   $(suffix NAMES…)

8.3.4   $(basename NAMES…)

8.3.5   $(addsuffix SUFFIX,NAMES…)

8.3.6   $(addprefix PREFIX,NAMES…)

8.3.7   $(join LIST1,LIST2)

8.3.8   $(wildcard PATTERN)

8.4   foreach 函數

8.5   if 函數

8.6   call函數

8.7   value函數

8.8   eval函數

8.9   origin函數

8.10  shell函數

8.11  make的控制函數

8.11.1  $(error TEXT…)

8.11.2  $(warning TEXT…)

第九章:執行make

9.1   指定makefile文件

9.2   指定終極目標

9.3   替代命令的執行

9.4   防止特定文件重建

9.5   替換變量定義

9.6   使用make進行編譯測試

9.7   make的命令行選項

第十章:make的隱含規則

10.1   隱含規則的使用

10.2   make的隱含規則一覽

10.3   隱含變量

10.3.1   代表命令的變量

10.3.2   命令參數的變量

10.4   make隱含規則鏈

10.5   模式規則

10.5.1   模式規則介纏

10.5.2   模式規則示例

10.5.3   自動化變量

10.5.4   模式的匹配

10.5.5   萬用規則

10.5.6   重建內嵌隱含規則

10.6   缺省規則

10.7   後綴規則

10.8   隱含規則搜索算法

第十一章:使用make更新靜態庫文件

11.1  庫成員作為目標

11.2  靜態庫的更新

11.2.1 更新靜態庫的符號索引表

11.3  make靜態庫的注意事項

11.4  靜態庫的後綴規則

第十二章 GNU make的特點

12.1  源自System v的特點

12.2  源自其他版本的特點

12.3  GNU make自身的特點

第十三章 和其它版本的兼容

第十四章 Makefile的約定

14.1  基本的約定

14.2  規則命令行的約定

14.3  代表命令變量

14.4  安裝目錄變量

14.5  Makefile的標準目標名

14.6  安裝命令分類

第十五章 make的常見錯誤信息

 

附錄:關鍵字索引

1.  GNU make可識別的指示

2.  GNU make函數

3.  GNU make的自動化變量

4.  GNU make環境變量

後序


下一章


arrow
arrow
    全站熱搜

    lver76 發表在 痞客邦 留言(0) 人氣()