我愛學習網-上傳
當前位置: 主頁 > 文庫 > C語言 >

Makefile文件中包含哪些規則?

時間:2020-12-19 13:00來源:我愛學習網 作者:apple 點擊:

Makefile 的書寫規則

想要書寫一個完整的 Makefile文件,需要了解 Makefile 的相關的書寫規則。我們已經知道了 Makefile 描述的是文件編譯的相關規則,它的規則主要是兩個部分組成,分別是依賴的關系執行的命令,其結構如下所示:

targets : prerequisites
    command

或者是

targets : prerequisites; command
    command

相關說明如下:

  • targets:規則的目標,可以是 Object File(一般稱它為中間文件),也可以是可執行文件,還可以是一個標簽;
  • prerequisites:是我們的依賴文件,要生成 targets 需要的文件或者是目標。可以是多個,也可以是沒有;
  • command:make 需要執行的命令(任意的 shell 命令)。可以有多條命令,每一條命令占一行。

注意:我們的目標和依賴文件之間要使用冒號分隔開,命令的開始一定要使用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文件包括的內容

簡單的概括一下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 中使用“#”字符,可以用反斜框進行轉義,如:“\#”。

 

------分隔線----------------------------
    ?分享到??
看看啦
主站蜘蛛池模板: 成人毛片一区二区| 亚洲AV无码一区二区三区鸳鸯影院 | 亚洲国产成人一区二区三区| 精品国产一区AV天美传媒| 熟女性饥渴一区二区三区| 天堂成人一区二区三区| 亚洲国产一区二区a毛片| 农村人乱弄一区二区| 一区二区三区伦理高清| 国产无吗一区二区三区在线欢| 偷拍激情视频一区二区三区| 亚洲熟妇av一区二区三区漫画| 午夜无码一区二区三区在线观看 | 日韩人妻无码一区二区三区| 国产在线一区二区三区av| 国产精品无码亚洲一区二区三区 | 日韩十八禁一区二区久久| 精品久久久久久中文字幕一区| 亚洲日韩AV一区二区三区四区| 日日摸夜夜添一区| 中文乱码字幕高清一区二区| 影音先锋中文无码一区| 日韩精品一区二区三区中文精品| 波多野结衣AV无码久久一区| 在线视频一区二区三区三区不卡| 精品免费久久久久国产一区| 丰满人妻一区二区三区免费视频| 亚洲一区日韩高清中文字幕亚洲| 一区二区精品视频| 手机看片福利一区二区三区| 国产视频一区在线观看| 一区二区三区视频在线观看| 精品人妻码一区二区三区| 精品视频一区二区三区四区| 精品无码人妻一区二区三区18| 国产精品一区二区久久乐下载| 国产a久久精品一区二区三区| 一区二区网站在线观看| 久久久一区二区三区| 无码人妻精品一区二区三区蜜桃| 国产一区二区三区乱码在线观看|