MAKEFILE詳解 如何工作 三

2021-08-20 20:38:20 字數 1055 閱讀 1359

三、make是如何工作的 

在預設的方式下,也就是我們只輸入make命令。那麼, 

1、make會在當前目錄下找名字叫「makefile」或「makefile」的檔案。 

2、如果找到,它會找檔案中的第乙個目標檔案(target),在上面的例子中,他會找到「edit」這個檔案,並把這個檔案作為最終的目標檔案。

3、如果edit檔案不存在,或是edit所依賴的後面的 .o 檔案的檔案修改時間要比edit這個檔案新,那麼,他就會執行後面所定義的命令來生成edit這個檔案。 

4、如果edit所依賴的.o檔案也不存在,那麼make會在當前檔案中找目標為.o檔案的依賴性,如果找到則再根據那乙個規則生成.o檔案。(這有點像乙個堆疊的過程) 

5、當然,你的c檔案和h檔案是存在的啦,於是make會生成 .o 檔案,然後再用 .o 檔案生命make的終極任務,也就是執行檔案edit了。 

這就是整個make的依賴性,make會一層又一層地去找檔案的依賴關係,直到最終編譯出第乙個目標檔案。在找尋的過程中,如果出現錯誤,比如最後被依賴的檔案找不到,那麼make就會直接退出,並報錯,而對於所定義的命令的錯誤,或是編譯不成功,make根本不理。make只管檔案的依賴性,即,如果在我找了依賴關係之後,冒號後面的檔案還是不在,那麼對不起,我就不工作啦。 

通過上述分析,我們知道,像clean這種,沒有被第乙個目標檔案直接或間接關聯,那麼它後面所定義的命令將不會被自動執行,不過,我們可以顯式地要make執行。即命令——「make clean」,以此來清除所有的目標檔案,以便重編譯。 

於是在我們程式設計中,如果這個工程已被編譯過了,當我們修改了其中乙個原始檔,比如file.c,那麼根據我們的依賴性,我們的目標file.o會被重編譯(也就是在這個依性關係後面所定義的命令),於是file.o的檔案也是最新的啦,於是file.o的檔案修改時間要比edit要新,所以edit也會被重新鏈結了(詳見edit目標檔案後定義的命令)。 

而如果我們改變了「command.h」,那麼,kdb.o、command.o和files.o都會被重編譯,並且,edit會被重鏈結。 

Makefile詳解 概述

什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都為你做了這個工作,但我覺得要作乙個好的和professional的程式設計師,makefile還是要懂。這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解html...

Makefile詳解 介紹

make命令執行時,需要乙個 makefile 檔案,以告訴make命令需要怎麼樣的去編譯和鏈結程式。首先,我們用乙個示例來說明makefile的書寫規則。以便給大家乙個感興認識。這個示例 於gnu的make使用手冊,在這個示例中,我們的工程有8個c檔案,和3個頭檔案,我們要寫乙個makefile來...

Makefile詳解 內容

makefile裡主要包含了五個東西 顯式規則 隱晦規則 變數定義 檔案指示和注釋。1 顯式規則。顯式規則說明了,如何生成乙個或多的的目標檔案。這是由makefile的書寫者明顯指出,要生成的檔案,檔案的依賴檔案,生成的命令。2 隱晦規則。由於我們的make有自動推導的功能,所以隱晦的規則可以讓我們...