前言:當我們有一個由多個程式組合而成的一之程式,正常情況下我們修改某個子程式,編譯器執行前必須將每個子程式都在重編譯一次,這非常浪費時間,Makefile可以去幫我們檢查相依關係,並且去檢查修改時間加以判斷哪些子程式需要重編譯,不必花費多餘時間在編譯沒有改動過的子程式上。
實作:
main.cencrypt.c
encrypt.h 內容
void encrypt(char* msg);
關係圖:
補充:利用.c檔 的開頭擋來排出關係圖 ,.c檔經過-c(compile)生出目地擋.o
Makefile檔
encrypt.o: encrypt.h encrypt.c //encrypt.o與 encrypt.h encrypt.c相依
gcc -c encrypt.c
main.o: main.c encrypt.h //main.o 與main.c encrypt.h相依
gcc -c main.c
try: main.o encrypt.o //try.exe 與 main.o encrypt.o相依
gcc main.o encrypt.o -o try
實際操作:假設我修改了encrypt.c 的情況下執行(window指令為mingw32-make)mingw32-make try (linux 下指令為make)
因為我只修改了encrypt.c 所以make只幫我重新編譯encrypt.c (不去編譯main.c !!)
然後再重新Link main.o encrypt.o 來輸出一份try.exe
ref:深入淺出C
沒有留言:
張貼留言