想要書寫一個完整的 Makefile文件,須要瞭解 Makefile 的相關的書寫規則。咱們已經知道了 Makefile 描述的是文件編譯的相關規則,它的規則主要是兩個部分組成,分別是依賴的關係和執行的命令,其結構以下所示:程序員
targets : prerequisitesshell
command編程
或者是學習
targets : prerequisites; commandui
commandspa
相關說明以下:3d
✿ S9targets:規則的目標,能夠是 Object File(通常稱它爲中間文件),也能夠是可執行文件,還能夠是一個標籤;code
✿ prerequisites:是咱們的依賴文件,要生成 targets 須要的文件或者是目標。能夠是多個,也能夠是沒有;blog
✿ command:make 須要執行的命令(任意的 shell 命令)。能夠有多條命令,每一條命令佔一行。ip
注意:咱們的目標和依賴文件之間要使用冒號分隔開,命令的開始必定要使用Tab鍵。
經過下面的例子來具體使用一下 Makefile 的規則,Makefile文件中添代碼以下:
test:test.c
gcc -o test test.c
上述代碼實現的功能就是編譯 test.c 文件,經過這個實例能夠詳細的說明 Makefile 的具體的使用。其中 test 是的目標文件,也是咱們的最終生成的可執行文件。
依賴文件就是 test.c 源文件,重建目標文件須要執行的操做是gcc -o test test.c。這就是 Makefile 的基本的語法規則的使用。
使用 Makefile 的方式:首先須要編寫好 Makefile 文件,而後在 shell 中執行 make 命令,程序就會自動執行,獲得最終的目標文件。
經過上面的例子咱們能夠了解到,Makefile 的規則很簡單,但這並非 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 中使用「#」字符,能夠用反斜框進行轉義,如:「\#」。
無論你是轉行也好,初學也罷,進階也可,若是你想學編程,進階程序員~
【值得關注】個人 編程學習交流俱樂部 !【點擊進入】
全棧程序員正在等你加入~