【Linux編程】Makefile文件中包含哪些規則?

想要書寫一個完整的 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 中使用「#」字符,能夠用反斜框進行轉義,如:「\#」。


 

無論你是轉行也好,初學也罷,進階也可,若是你想學編程,進階程序員~

【值得關注】個人 編程學習交流俱樂部 !【點擊進入】

全棧程序員正在等你加入~

相關文章
相關標籤/搜索