開發工具(二)

2021-08-23 13:32:44 字數 1679 閱讀 4082

makefile中的注釋

makefile檔案中的注釋以#開始,並且直到本行結束。正如在c原始檔中一樣,makefile檔案中的注釋有助於作者也其他人更好的理解檔案編寫時所期望的作用。

makefile中的巨集

即使有make與makefile是管理多個原始碼檔案工程的強大工具。然而,對於由大量的檔案所組成的工程來說,他們仍顯得龐大和不靈活。所以makefile允許我們使用巨集,從而我們可以將其寫為更為通用的形式。

我們在makefile檔案中以macroname=value的形式定義乙個巨集,然後以$(macroname)或是$的形式來訪問macroname的值。一些版本的make也可以接受$macroname的形式。我們也可以通過將=之後的部分留空來設定乙個空的巨集。

在makefile檔案中,巨集通常用於編譯的選項。通常,當正在開發乙個程式時,我們通常並不會使用優化選項來進行編譯,但是卻需要包含除錯資訊。而對於發布乙個程式通常是相反的情況:發布乙個執行速度盡量快而不帶任何除錯資訊的二進位制程式。

makefile1的另乙個問題是他假定編譯器為gcc。在其他的unix系統上,我們也許會使用cc或是c89。如果我們希望將我們的makefile執行在其他版本的unix系統上,或是如果我們在我們的系統上使用乙個不同的編譯器,我們就需要修改makefile的多行來使其工作。巨集是用於收集系統相關部分的好方法,從而可以很容易的進行修改。

巨集通常是在makefile檔案本身內部定義的,但是也可以通過帶有巨集定義的make命令來指定,例如make cc=c89。類似這樣的命令列定義可以覆蓋makefile檔案中的定義。當在makefile檔案外部使用時,巨集定義必須作為乙個單獨的引數進行傳遞,所以要避免空格或是使用引號的形式:make "cc = c89"。

試驗--帶有巨集的makefile

make程式使用合適的定義來替換$(cc),$(cflags)以及$(include),與帶有#define形式的c編譯器類似。現在如是我們需要修改編譯命令,我們只需要修改makefile檔案中的一行。

事實上,make有多個內部巨集,從而我們可以更為簡潔的來使用。在下表中,我們列出其中最常用的一些;我們會在後的例子中看到他們的使用。這些巨集中的每乙個僅會在他們剛要被使用時進行擴充套件,所以巨集的語義會隨著makefile檔案的處理而變化。事實上,如果這些不以這樣的方進行工作,他們就不會太大的作用。

$? 距離當前目標最近一次修改的需求列表

$@ 當前目標的名字

$< 當前需求的名字

$* 不帶字首的當前需求的名字

還有另外兩個有用的特殊字元,也許我們會在makefile檔案中的命令前遇到:

-選擇make忽略所有錯誤。例如,如果我們希望建立乙個目錄,但是希望忽略錯誤,也許是因為這個目錄已經存在了,我們只需要在mkdir命令之前帶有乙個負號。我們將會在後面的章節中看到-的使用。

@告訴make在執行命令之前不要將命令輸出到標準輸出。如果我們希望使用echo來顯示一些指令時,這個字元就特別有用。

多個目標

通常需要構建多個目標檔案,而不是乙個目標檔案,或者是在乙個地方收集多個命令組。我們可以擴充套件我們的makefile檔案來完成這些任務。下面我們新增乙個"clean"選項來移除不需要的目標檔案,以及乙個"install"選項來將完成的程式移動到另乙個不同的目錄中。

試驗--多個目標

開發工具(二)

makefile中的注釋 makefile檔案中的注釋以 開始,並且直到本行結束。正如在c原始檔中一樣,makefile檔案中的注釋有助於作者也其他人更好的理解檔案編寫時所期望的作用。makefile中的巨集 即使有make與makefile是管理多個原始碼檔案工程的強大工具。然而,對於由大量的檔案...

開發工具(二)

makefile中的注釋 makefile檔案中的注釋以 開始,並且直到本行結束。正如在c原始檔中一樣,makefile檔案中的注釋有助於作者也其他人更好的理解檔案編寫時所期望的作用。makefile中的巨集 即使有make與makefile是管理多個原始碼檔案工程的強大工具。然而,對於由大量的檔案...

RealView MDK開發工具

arm 2009 03 02 16 30 54 閱讀335 字型大小 大 中小 realview mdk開發工具源自德國keil公司,被全球超過10萬的嵌入式開發工程師驗證和使用,是arm公司目前最新推出的針對各種嵌入式處理器的軟體開發工具。realview mdk整合了業內最領先的技術,融合了中國...