工程管理 makefile檔案

2021-09-28 14:54:04 字數 1577 閱讀 8449

乙個工程中的原始檔不計數,其按型別、功能、模組分別放在若干個目錄中,編譯需要花費很多時間,還有可能出錯。 makefile 定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為makefile 就像乙個 shell 指令碼一樣,其中也可以執行作業系統的命令。makefile 帶來的好處就是——「自動化編譯」,一旦寫好,只需要乙個 make 命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。

首先,通過具體的例子說明makefile檔案的編寫規則。

在calculator目錄下有cal.h my_add.c my_sub.c my_mul.c my_div.c test.c 等檔案。

編寫makefile檔案,如圖所示。

main 是要生成的目標檔案的名稱;

main後邊的*.o檔案是生成main所需要的檔案或目標;

my_add.o 後邊的 my_add.c 是生成my_add.o 所需要的檔案;

gcc -o main *.o 是make需要執行的命令。

這是乙個檔案的依賴關係,在這個makefile中,目標檔案(main)包含:執行檔案main和中間目標檔案(*.o),依賴檔案就是冒號後邊的 .c 檔案。每乙個 .o 檔案都有一組依賴檔案,而這些 .o 檔案又是執行檔案main的依賴檔案。依賴關係實質上說明了目標檔案是由哪些檔案生成的。

gcc -o 或者 gcc -c 定義了如何生成目標檔案的作業系統命令,一定要以tab鍵開頭,不能敲空格。有檔案更新時,只重新編譯更新的檔案。

這裡要注意一點,makefile檔案的命名為makefile 或者 makefile。

clean不是乙個檔案,只是乙個動作名稱,其冒號後什麼也沒有,make不會自動去找檔案的依賴性,也就不會自動執行其後所定義的命令。要執行其後的命令需要用 make clean。

為了簡化makefile檔案,可以宣告乙個變數 var,有新的 .o 檔案加入只需要修改var的值就可以,用以下方式定義:

乙個工程中的原始檔不計數,其按型別、功能、模組分別放在若干個目錄中,編譯需要花費很多時間,還有可能出錯。 makefile 定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為makefile 就像乙個 shell 指令碼一樣,其中也可以執行作業系統的命令。makefile 帶來的好處就是——「自動化編譯」,一旦寫好,只需要乙個 make 命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。

工程管理檔案makefile用法

src 所有的.c檔案 include 所有的.件 lib 所有的庫檔案 bin 編譯之後的可執行檔案 makefile 裡面有一套可以編譯整個專案的規則。如果沒有makefile,使用者gcc編譯應該每次都要輸入 gcc main.c fun.c o main 學習書寫makefile之後,就可以...

Makefile工程管理

1 makefile用途 make的工作主要依賴於乙個叫makefile的檔案。makefile檔案描述了整個程式的編譯,鏈結等規則。其中包括 工程中的哪些原始檔需要編譯以及如何編譯,如何最後產生我們想要的可執行檔案。2 makefile中最重要的組成部分是規則 規則 用於說明如何生成目標檔案,規則...

makefile工程管理

當工程量少時,可以採用gcc檔案單個編譯。像linux kernel 1萬多個時採用make管理。linux程式設計師必須學會使用gnu make來構建和管理自己的軟體工程。make在執行時,需要乙個命名為makefile的檔案。makefile檔案描述了整個工程的編譯 鏈結等規則。makefile...