make clean,make distclean與make depend的區別


make clean僅僅是清除之前編譯的可執行文件及配置文件。
而make distclean要清除所有生成的文件。

Makefile

在符合GNU Makefiel慣例的Makefile中,包含了一些基本的預先定義的操作:

make

根據Makefile編譯源代碼,連接,生成目標文件,可執行文件。

make clean

清除上次的make命令所產生的object文件(后綴為“.o”的文件)及可執行文件。

make install

將編譯成功的可執行文件安裝到系統目錄中,一般為/usr/local/bin目錄。

make dist

產生發布軟件包文件(即distribution package)。這個命令將會將可執行文件及相關文件打包成一個tar.gz壓縮的文件用來作為發布軟件的軟件包。

它會在當前目錄下生成一個名字類似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我們在configure.in中定義的AM_INIT_AUTOMAKE(PACKAGE, VERSION)。

make distcheck

生成發布軟件包並對其進行測試檢查,以確定發布包的正確性。這個操作將自動把壓縮包文件解開,然后執行configure命令,並且執行make,來確認編譯不出現錯誤,最后提示你軟件包已經准備好,可以發布了。

make distclean類似make clean,但同時也將configure生成的文件全部刪除掉,包括Makefile。

make depend

一種makefile的規則,通過掃描儀個目錄下的所有C\C++ 代碼,從而判斷出文件之間的依賴關系,如a.cc文件中調用了b.h(如以形勢include<b.h>),如果之后a.cc文件被改動,那么只需要重新編譯a.cc文件,不需要編譯b.h文件。否則所有的文件都需要重新編譯

 

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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM