在乙個較大的工程中,工程的原始檔按不同的型別、功能、模組分類,這樣給我們在編譯的過程中就增加了較大的工程量,並且有些還有可能要進行一些較為複雜的操作。編譯一次還可以,但我們在除錯的過程中不可能只編譯一次,為了解決這個麻煩,做到一勞永逸。我們就可以通過編寫makefile將這些需要執行的步驟寫進去。《因為makefile就像乙個shell指令碼語言一樣,也可以執行作業系統的命令。>然後呼叫make命令。整個工程完全自動編譯。
makefile的通用結構
#以『#』開頭的行表示注釋
#定義變數var ,強行賦值為test
var = test
#第一條目標為總的目標
#依賴可以是檔案(目錄)或為其他目標
#動作可以是linux命令,動作的那一行必須以tab鍵開頭
target:depend1 depend2 depend3 . . .
[tab] action1
[tab] action2
target1:
[tab] action1
[tab] action2
**注意:**目標可以只有依賴沒有動作,也可以只有動作沒有依賴。
如果目標有依賴它將先執行依賴再執行動作
如下是我的簡單**示例:
libpath = /home/iot/luofang //路徑
ldflags += -l$
cc = gcc
all: //總目標
clean:
執行結果及分析:
在執行make命令之後該路徑下增加了乙個 編譯後的可執行檔案 temper_client
執行該檔案
要執行出總目標之外的其他目標,只要執行 make+目標名 就行
簡單編寫makefile
乙個makefile基本的規則 a b tab tab a為目標檔案,b為依賴檔案 可能含有多個 接下來為命令 必須含有tab 操作依賴檔案得到目標檔案 以乙個簡單的示例來演示如何編寫乙個基礎的makefile ifndef file1 h define file1 h ifdef cplusplu...
編寫簡單的makefile
假如有乙個上百個檔案的 構成的專案,如果只是對其中乙個或少數幾個檔案進行了修改,若用gcc編譯工具就不得不把整個專案裡的檔案重新編譯一遍。編譯過程分為編譯 彙編鏈結等階段。其中,編譯階段僅檢查語法錯誤以及函式與變數的宣告是否正確,在鏈結階段則主要完成函式鏈結和全域性變數的鏈結。因此,沒有改動的源 根...
簡單的makefile編寫
cc gcc cflags wall i home coc target sysroots corei7 64 poky linux usr include libxml2 ldflags l home coc target sysroots corei7 64 poky linux usr lib...