2015年6月23日 星期二

[C筆記]Makefile介紹與實際操作

前言:當我們有一個由多個程式組合而成的一之程式,正常情況下我們修改某個子程式,編譯器執行前必須將每個子程式都在重編譯一次,這非常浪費時間,Makefile可以去幫我們檢查相依關係,並且去檢查修改時間加以判斷哪些子程式需要重編譯,不必花費多餘時間在編譯沒有改動過的子程式上。


實作:

main.c


encrypt.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

沒有留言:

張貼留言