C++學習筆記24:makefile文件

makefilec++

make命令:負責c/c++程序編譯與連接shell

  • make根據指定命令進行建構
  • 建構規則文件:GNUmakefile , makefile,Makefile

makefile 文件格式函數

makefile 語法測試

--基本語法,變量,條件判斷,循環,函數ui

makefile 文件的基本格式spa

target...:prerequisites...對象

[tab鍵]  commands繼承

 makefile文件的規則進程

  • makefile 文件由一系列規則構成
  • 規則目的:建構目標的先決條件是什麼以及如何構建目標
  • 若是沒有指定目標,缺省執行第一個目標
  • 若prerequisites中有一個以上的文件比target文件要新,執行commands所定義的命令

 

target:目標get

  • 一般爲編譯期的文件名,以指定要建構的對象,也能夠是執行文件,還能夠是標籤(操做名稱,僞目標)
  • 能夠是單一目標,也能夠爲空格分隔的多個目標
  • 每一個目標都定義了一組處理規則,和其相關規則構成規則鏈

 

prerequisites:先決條件

  • 爲生成該目標所須要的先決文件或者目標(前置條件)
  • 通常爲空格分隔的文件名,指定目標是否重建的判斷標準,即只要有一個先決條件不存在或者有過更新,就須要重建目標

prerequisites:先決條件

若目標先決條件自己須要重建,則匹配該先決條件的目標,執行其對應的命令

commands:命令

由一行或者多行shell命令組成,命令前有Tab鍵

指示如何建構目標,通常爲生成目標文件

每行命令都在單獨的進程中執行,彼此沒有繼承關係,不能簡單傳遞數據;解決辦法是:用分號將多條命令書寫在單行(此時可用「\」折行),或者爲該條規則添加指示「.ONESHELL:」

 

僞目標:操做名稱,而不是文件名

  • 刪除編譯後的二進制目標文件,例如:

clean:

    rm -f *.o

執行命令時需指定僞目標:$make clean

若當前目錄下有clean文件,則此規則不會被執行;此時可用「.PHONY:clean」明確指示clean爲僞目標;

make將跳過文件檢查,執行其對應的命令

執行清除任務的僞目標通常放在腳本的最後

 

 

僞目標慣例

  • all:全部目標的目標,通常爲編譯後全部的目標,對同時編譯多個程序頗有用
  • clean:刪除由make建立的文件
  • install:安裝已編譯好的程序,主要任務是完成目標文件的拷貝
  • print:列出改變過的源文件
  • tar:打包備份源文件,造成tar文件
  • dist:建立壓縮文件,通常將tar文件壓縮成Z文件或者gz文件
  • TAGS:更新全部的目標,以備完整地從新編譯使用
  • check和test:通常用來測試makefile的流程

 

例子:假設程序主文件爲:main.c,使用library庫

#註釋行

prog:main.o library.o

  cc -o prog main.o library.o

main.o: main.c library.h

  cc -c main.c

library.o:library.c library.h

  cc -c library.c

.PHONY:clean

clean:

  rm main.o library.o

接下里:make(生成prog)

    make clean 

相關文章
相關標籤/搜索