makefile自動化編譯學習

2021-09-30 15:40:10 字數 929 閱讀 7524

makefile檔案描述源程式之間的相互關係,例如依賴,並自動維護編譯工作。makefile 類似於shell指令碼按照某種語法進行編寫,檔案說明如何各個原始檔是如何被編譯並且連線生成最後的可執行檔案,好處就是自動化編譯,極好地提高了軟體開發的效率,應用非常廣泛,以下**是一些稍微簡單的模板,不過已經在很多小專案裡夠用了:

clean:

rm -f $(objs)

rm -f $(output)

all: clean $(output)

.precious:%.cpp %.c %.c

.suffixes:

.suffixes: .c .o .pc .ec .cc

.c.o:

$(ccompile) -c -o $*.o $(compileoption) $(includedir) $*.c

.cc.o:

$(ccompile) -c -o $*.o $(compileoption) $(includedir) $*.cpp

.ec.c:

$(esql) -e $(esql_option) $(includedir) $*.ec

.pc.c:

$(proc) $(proc_option) $*.pc

ccompile與cppcompile變數為編譯語言,對應c與c++,compileoption為編譯的選擇項,對應的是要編譯的源**,

includedir為編譯所需要引入的標頭檔案,比如庫標頭檔案等,這裡引用的是oracle資料庫系統的標頭檔案。

libdirs為編譯所需要引入的庫檔案,

objs為編譯的目標庫檔案,output為最終的執行程式名稱,proc_option為proc語言的編譯選項,

clean為清除編譯出的目標檔案,

.c.o為編譯生成目標庫檔案的命令集合

$(output)為生成目標執行程式的命令集合

makefile自動化變數

makefile自動化變數 表示規則中的目標檔案集。在模式規則中,如果有多個目標,那麼,就是匹配於目標中模式定義的集合。僅當目標是函式庫檔案中,表示規則中的目標成員名。例如,如果乙個目標是 foo.a bar.o 那麼,就是 bar.o 就是 foo.a 如果目標不是函式庫檔案 unix下是 a w...

makefile 自動化變數

代表規則中的目標檔名。如果目標是乙個文件 linux中,一般稱.a檔案為文件 那麼它代表這個文件的檔名。在多目標的模式規則中,它代表的是哪個觸發規則被執行的目標檔名。規則的目標檔案是乙個靜態庫檔案時,代表靜態庫的乙個成員名。例如,規則的目標是 foo.a bar.o 那麼,的值就為 bar.o 的值...

Makefile自動化變數

在上述的模式規則中,目標和依賴檔案都是一系例的檔案,那麼我們如何書寫乙個命令來完成從不同的依賴檔案生成相應的目標?因為在每一次的對模式規則的解析時,都會是不同的目標和依賴檔案。自動化變數就是完成這個功能的。在前面,我們已經對自動化變數有所提涉,相信你看到這裡已對它有乙個感性認識了。所謂自動化變數,就...