高等 C 語言簡介字串指標與陣列函數結構物件導向記憶體檔案錯誤處理巨集處理C 與組合語言資料結構動態字串動態陣列鏈結串列雜湊表開發環境MakeCygwinMinGWDevC++wxDevC++編譯器gcc 編譯器TinyCC 編譯器LCC 編譯器應用主題CGI 程式GNU 程式視窗程式影像處理練習題訊息相關網站參考文獻最新修改簡體版English |
程式碼列表假定有三個檔案,分別如下所示:
那麼,我們可以使用以下指令對這些檔案進行編譯、建函式庫、連結等動作,如下所示:
您也可以將這樣的程序寫為 Shell 等批次檔,然後執行整個專案的建置動作。 但是這樣就必須不斷的重複撰寫 gcc -c … -o -I . -L . 的指令,有多少 C 語言檔就必須有多少行這種指令,並不方便。 簡易建置檔 (Make0)因此 GNU 發展出了 make 建置檔,這種建置檔後來也被用在其他的編譯工具上,成為撰寫 C 語言的重要工具。 建置檔的語法如下,其中上方的 target:target1 target2 … 代表 target (目標文件) 依賴於 target1 target2 … 等元素,這條描述了依賴關係。底下的 rule 之前必須有的 TAB 鍵,代表當 target 被觸發後,必須執行的動作。
因此對於上述專案而言,以下是建置檔 (Makefile) 可以用來建置整個專案。
變數設定 (Make1)
執行結果
樣式比對
其中的 %.o 與 %.c 中的 % 稱為樣式,我們可以用 $* 取出這個樣式。 自動變數 (Make2)Makefile有三個非常有用的變數。分別是$@,$^,$<代表的意義分別是:
內隱規則 (Make3)由於上述寫法對每一個 C 語言程式都要寫一條規則,實在太麻煩了,因此就有一種稱為內隱規則的寫法,預設套用在每一種程式語言上,舉例而言,對 C 語言程式預設套用的規則為 $(CC) -c # $(CPPFLAGS) $(CFLAS) xxx.c。 而且系統通常會預設了一些變數,例如:
因此我們可以將上述 Makefile 簡化如下:
附檔名規則還有更古老的一種叫suffix rule的方法來做,這種方法就有限制性 了,因為只能用在副檔名的規則。例如
prequeite 比對條件中的項目target : prequeite
參考文獻
|
GCC 的專案建置器 -- Make
page revision: 35, last edited: 09 Apr 2013 08:26
Post preview:
Close preview