makefile工程管理

2022-07-16 09:12:10 字數 1789 閱讀 5571

當工程量少時,可以採用gcc檔案單個編譯。

像linux kernel**,1萬多個時採用make管理。

linux程式設計師必須學會使用gnu make來構建和管理自己的軟體工程。

make在執行時,需要乙個命名為makefile的檔案。makefile檔案描述了整個工程的編譯、鏈結等規則。

makefile例子:

一、makefile術語:

規則:用於說明如何生成乙個或者多個目標檔案。

規則格式:

targets:prerequisites

command

目標 依賴 命令

main.o:main.c

gcc -c main.c

注意:**命令需要以【tab】鍵開始**

二、makefile目標:

makefile中只應該有乙個最終目標。其它目標都是被這個目標所連帶出來的。

一般定義在makefile中的目標可能會有很多,但第一條規則中的目標將被確定為最終的目標。

三、makefile檔名:

make命令預設在當前目錄下尋找名字為makefile或者makefile的工程檔案,當名字不為這兩者之一時,可以使用以下指定:

make -f   檔名    make

make --file 檔名

四、偽目標:只有動作沒有依賴

makefile中把那些沒有任何依賴只有執行動作的目標稱為「偽目標」(phony targets).

.phony:clean

clean:

rm -f hello main.o func1.o func2.o

說明:".phony"將「clean」目標宣告為偽目標

五、變數

hello:main.o func1.o  func2.o   

gcc main.o func1.o func2.o -o hello

如果要為hello目標新增乙個依賴:func3.o:有以下兩種操作:

1

、hello:main.o func1.o func2.ofunc3.ogcc mian.o func1.o func2.ofunc3.o-o hello2.

obj=main.o func1.o func2.ofunc3.ohello:$(obj)

gcc $(obj) -o hello

當命令有很多行時,第二種方法最合適。

在makefile種,存在系統預設的自動化變數

$^:代表所有的依賴檔案

$@:代表目標

$<:>

ex:hello:main.o func1.o func2.

0gcc main.o func1.o func2.o -o hello

等價於hello:main.o func1.o func2.o

gcc $^ -o $@

makefile中「#」字元後的內容被視作注釋。

hello: hello.c

@gcc hello.c -o hello

注意:@取消回顯   //不顯示命令

Makefile工程管理

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

Makefile工程管理初探

makefile是一種用於工程管理的規則,乙個工程中的原始檔不計其數,如何通過一定的規範來指定哪些原始檔需要編譯,哪些原始檔需要忽略,這一點很重要,makefile提供了一種很好的工程管理的規則來實現對整個專案的編譯和配置,試想而知,當乙個工程包含幾千個原始檔和標頭檔案的時候,你僅僅通過單條的命令乙...

工程管理 makefile檔案

乙個工程中的原始檔不計數,其按型別 功能 模組分別放在若干個目錄中,編譯需要花費很多時間,還有可能出錯。makefile 定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為makefile 就像乙個 shell 指令碼一樣,其中也...