1. 程式人生 > >【makefile學習記錄1】認識make和makefile

【makefile學習記錄1】認識make和makefile

1、什麼是make?為什麼需要make?

make本質是一個應用程式

  • 用來解析源程式之間的依賴關係 
      很多原始碼程式的檔案是非常多的,而且那些檔案之間大多是有依賴關係的,make就是可以解析這些依賴的關係。
  • 根據依賴關係自動維護編譯工作
      因為在我們編譯大型原始碼的時候,需要編譯很多的程式,加入我們的程式在編譯到一大半的時候,有一個程式報錯停止編譯了,那麼我們就需要改錯,然後重新make,重新make後,它會自動從上次編譯報錯的地方接著編譯,而不需要從頭開始編譯,這樣就可以節省很多時間。
  • 執行宿主作業系統中的各種命令
       makefile其實可以理解為一種指令碼,裡面大多是執行相關宿主作業系統的命令。
      其表現形式就是一個命令。用來編譯原始碼。在學習c/c++中,直接在命令列gcc/g++編譯源程式。問什麼還需要make呢?在實際工程中,原始檔十分龐大,gcc/g++十分麻煩,這是就體現了make在實際的工程專案中的價值,其中GNUmake使用非常多。

2、什麼是makefile?

makefile是一個描述檔案配置檔案,其中寫上一些規則,有make來解讀這些規則)

  • 定義一系列的規則來制定原始檔編譯的先後順序
  • 擁有特定的語法規則,支援函式定義和函式呼叫
  • 能夠直接整合作業系統中的各種命令

3、make和makefile之間的關係?

makefile中的描述用於指導make程式如何完成工作;make根據makefile中的規則執行命令,最後完成編譯輸出。

舉例:在makefile中描述x.c,y.c,z.c之間的依賴關係

          make根據makefile中的所列出的描述規則來進行具體的編譯,最終生成可執行程式(也可稱作目標

make相當於一個直譯器,來解釋makefile指令碼程式。

4、最簡單的makefile示例

注意:目標後的命令需要用('\t')隔開,否則會報錯。

makefile程式的使用示例:

make -f mf.txt hello

        功能說明:以hello關鍵字作為目標查詢mf.txt檔案,並執行目標hello處的命令。

在我們的Linux系統中,簡單即是美。可將上邊的命令簡寫為:

make hello

        功能說明:以hello關鍵字作為目標查詢當前目錄makefile或Makefile檔案,並執行hello處的命令。

也可以簡寫為:

make

        功能說明:查詢makefile或Makefile檔案中最頂層目標,並執行最頂層目標的命令。

注意:

  • 當makefile和Makefile同時存在於一個目錄時,鍵入make命令,執行makefile中的相關命令。
  • 若當前目錄中存在makefile和Makefile,Makefile中存在目標hello,而makefile中不存在時,鍵入make hello報錯。