Makefile 的書寫規則想要書寫一個完整的 Makefile文件,需要了解 Makefile 的相關的書寫規則。我們已經知道了 Makefile 描述的是文件編譯的相關規則,它的規則主要是兩個部分組成,分別是依賴的關系和執行的命令,其結構如下所示:
或者是
相關說明如下:
通過下面的例子來具體使用一下 Makefile 的規則,Makefile文件中添代碼如下:
上述代碼實現的功能就是編譯 test.c 文件,通過這個實例可以詳細的說明 Makefile 的具體的使用。其中 test 是的目標文件,也是我們的最終生成的可執行文件。依賴文件就是 test.c 源文件,重建目標文件需要執行的操作是gcc -o test test.c。這就是 Makefile 的基本的語法規則的使用。
通過上面的例子我們可以了解到,Makefile 的規則很簡單,但這并不是 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 中使用“#”字符,可以用反斜框進行轉義,如:“\#”。
|