理由:Linux環境下,編碼、測試、自動化編譯都靠本身解決linux
#include "test.h" int add(int x, int y){ } |
#ifndef _TEST_H #define _TEST_H int add(int x, int y); #endif |
test:add.o gcc -o test add.o add.o:add.c test.h gcc -c add.c clean: rm -rf test rm -rf *.o |
target:目標文件 依賴的中間文件
command
clean
|
一、make會在當前目錄下找名字叫「Makefile」或「makefile」的文件。
二、若是找到,它會找文件中的第一個目標文件(target),在上面的例子中,他會找到「test」這個文件,並把這個文件做爲最終的目標文件。
三、若是test文件不存在,或是test所依賴的後面的 .o 文件的文件修改時間要比test這個文件新,那麼,他就會執行後面所定義的命令來生成edit這個文件。
四、若是test所依賴的.o文件也不存在,那麼make會在當前文件中找目標爲.o文件的依賴性,若是找到則再根據那一個規則生成.o文件。(這有點像一個堆棧的過程)
五、固然,你的C文件和H文件是存在的啦,因而make會生成 .o 文件,而後再用 .o 文件生成make的終極任務,也就是執行文件test了。