1. 程式人生 > >make clean,make distclean與make depend的區別

make clean,make distclean與make depend的區別

pen 配置文件 version 根據 post usr 終極 依賴關系 目錄

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

make clean,make distclean與make depend的區別