1、 由於實際開發中,乙個程式往往是由多個原始檔組成的,所以單用gcc除錯往往是很麻煩的,加上若在除錯過程中只修改了部分原始檔,用gcc命令編譯的話會將連同沒被修改的原始檔一起編譯,這大大地降低了編譯效率,由此引入了make工程管理器。
2、 make是乙個半自動化的工程管理器,它需要依賴makefile對程式進行編譯。他有以下兩方面的優越性;
(1) 使用方便;通過命令make就可以啟動make工程管理器進行編譯,不需要每次敲很多的命令列;
(2) 除錯效率高;make 每次都會檢查原始檔的時間戳,make只對上次編譯修改後的原始檔進行編譯,這樣就大大提高了編譯效率。
3、 makefile(指令碼檔案)—是一種指令碼語言,因為是批處理,一般用來做測試檔案,常用語言有python,shell…
makefile檔案由以下三部分組成:
需要生成的目標檔案(target file);生成目標檔案所要的依賴檔案(dependency file);生成目標檔案的編譯規則命令列;
按以下方式進行組織:
target file:dependency file
command
在command命令行前加乙個鍵
make能實現自動編譯,即他不僅能自動按照規則編譯,還觀察時間戳,觀察檔案是否修改;
如:編譯乙個具有加減乘除功能的計算器,製作其makefile如下所示:
然後make一下:
在編譯多個程式時,make的優勢就逐漸顯現出來了;
4.make中的偽指令:
如下圖所示:
執行一下:
5.makefile中的變數
在makefile檔案中,存在著大量的檔名,而且這些檔名都是重複出現的。所以在makefile中提供變數來代替檔名。
變數使用方式如下:
$(變數名)
例如:如此,若編譯時有錯,則只需修改變數處即可,提高了**編譯的時間。
此外,make工程管理器還提供了許多變數定義方式:
(1) 通過「=」來實現
(2) 通過「:=」來實現,但前面的變數不能通過後面的變數來定義
(3) 通過「+=」來實現,可以給變數追加值
(4) 通過「?=」來實現,若變數1前面定義過,則後面的定義會失效;
如:a1:= a.o
a1?=b.o
此時a1 的值為a.o
make學習筆記
編寫makefile makefile檔案命令開始不是空格,是tab鍵 make命令會自動查詢當前目錄下名為的makefile的檔案,找到之後會解析makefile檔案,並執行檔案的內容。makefile檔案中的內容 執行make命令 makefile預設只執行第乙個標號,其他標號不執行,若要執行其...
make 學習筆記四
make之vpath 變數 vpath 的定義中,使用空格或者冒號 將多個目錄分開。make 搜尋的目錄順序 按照變數 vpath 定義中順序進行 當前目錄永遠是第一搜尋目錄 例如 vpath src headers 它指定了兩個搜尋目錄,src 和 headers 對於規則 foo foo.c 如...
make 學習體會 一
在對makefile進行了部分學習後,感覺到還是多看看簡短的例子比較好。hellomake.c 複製 include int main 複製 hellofunc.c 複製 include include void myprinthellomake void 複製 hellomake.h exampl...