「一刻鐘」簡易使用MakeFile

2023-01-28 18:18:07 字數 2319 閱讀 6339

「一刻鐘」簡易使用makefile 檔案

(第一部分)

一、重要性:

1. 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力(相對性)。

2. makefile關係到了整個工程的編譯規則。乙個工程中的原始檔不計數,其按型別、功能、模組分別放在若干個目錄中,

3. makefile帶來的好處就是——「自動化編譯」,一旦寫好,只需要乙個make命令,整個工程完全自動編譯,極大的提高了軟體開發的效率。

二、簡單理解:

與makefile 的區別:make是乙個命令工具,是乙個解釋makefile中指令的命令工具。

2.makefile定義了一系列的規則來指定,哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更複雜的功能操作,因為makefile就像乙個shell指令碼一樣,其中也可以執行作業系統的命令。

簡單的說,為了便於管理,定義一些變數,按照一定規則由一些檔案(目標依賴檔案)生成另外一些檔案(目標檔案)

三、基本內容:

makefile裡主要包含了五個東西:顯式規則、隱晦規則、變數定義、檔案指示和注釋。

1、 顯式規則:顯式規則說明了,如何生成乙個或多的的目標檔案。這是由makefile的書寫者明顯指出,要生成的檔案,目標檔案的依賴檔案,生成的命令(生成規則)。

2、隱晦規則:由於我們的make有自動推導的功能,所以隱晦的規則可以讓我們比較粗糙地簡略地書寫makefile,這是由make所支援的。即make工具本身推導makefile檔案內容所使用的規則。

3、變數定義:在makefile中我們要定義一系列的變數,變數一般都是字串,這個有點你c語言中的巨集,當makefile被執行時,其中的變數都會被擴充套件到相應的引用位置上。

變數在宣告時需要給予初值,而在使用時,需要給在變數名前加上「$」符號,但最好用小括號「()」或是大括號「{}」把變數給包括起來。如果你要使用真實的「$」字元,那麼你需要用「$$」來表示。

1)「:=」規則進行變數定義,只使用之前的變數定義,

2)「 =」規則進行變數定義,可以前後的變數都可以使用。

3)「+ =」追加變數定義。

4、檔案指示:其包括了三個部分,乙個是在乙個makefile中引用另乙個makefile,就像c語言中的include一樣;另乙個是指根據某些情況指定makefile中的有效部分,就像c語言中的預編譯#if一樣;還有就是定義乙個多行的命令。

5、注釋:makefile中只有行注釋,其注釋是用「#」字元,這個就像c/c++中的「//」一樣。如果你要在你的makefile中使用「#」字元,可以用反斜框進行轉義,如:

\#」。

四、常見基本語法:

1.最典型的語法結構

target ... : prerequisites ...

command

......

target也就是乙個目標檔案,可以是object file,也可以是執行檔案。還可以是乙個標籤(label),對於標籤這種特性,在後續的「偽目標」章節中會有敘述。

prerequisites就是,要生成那個target所需要的檔案或是目標。被稱為目標檔案的依賴檔案。

command也就是make需要執行的命令。(任意的shell命令) 也就是由prerequisites生成target所需要生成規則或關係。

注意:在makefile中的命令,必須要以[tab]鍵開始。

2.換行符:「\」。

3.有一些變數是很奇怪字串,如「$<」、「$@」等,這些是自動化變數。

$@ : 表示規則中的目標檔案集。在模式規則中,如果有多個目標,那麼,"$@"就是匹配於目標中模式定義的集合。

$% :僅當目標是函式庫檔案時,表示規則中的目標成員名。例如,如果乙個目標是"",那麼,"$%"就是"","$@"就是""。

如果目標不是函式庫檔案(unix下是[.a],windows下是[.lib]),那麼,其值為空。

$< :依賴目標中的第乙個目標名字。如果依賴目標是以模式(即"%")定義的,那麼"$<"將是符合模式的一系列的檔案集。注意,其是乙個乙個取出來的。

$? :所有比目標新的依賴目標的集合。以空格分隔。

$^ :所有的依賴目標的集合。以空格分隔。如果在依賴目標中有多個重複的,那個這個變數會去除重複的依賴目標,只保留乙份.

$+ :這個變數很像"$^",也是所有依賴目標的集合。只是它不去除重複的依賴目標。

$* :這個變數表示目標模式中"%"及其之前的部分。如果目標是"dir/",並且目標的模式是"a.

%.b",那麼,"$*"的值就是"dir/"。這個變數對於構造有關聯的檔名是

4. 「.phony」表示,是個偽目標檔案(多用於shell命令的執行)。

(第二部分)

例項說明:bfm平台的makefile

一刻鐘隊會觀後感

每週五放學後,是我們中隊長討論學習方案的時候,我作為我們班的 勞動委員 當然也要積極參加討論嘍。這天,我剛整理完書包,組織委員小瑋就跑來通知我,等一下,都集中到講台前去開會。等我來到講台前,班長小穎看了看,說 大家都到了,我們開始開會吧。首先是學習委員曉雯發言,她說 我們來討論一下,怎麼樣讓同學們的...

華文學校初中數學基本運算能力每日一刻鐘

編制 黃文傑 第八周周一練1解方程.23.當為何值時,關於的方程的解為非負數.4.計算 5.解方程組 6.已知拋物線過三點 1,0 1,0 0,3 1 求這條拋物線所對應的二次函式的關係式 2 寫出它的開口方向 對稱軸和頂點座標 3 這個函式有最大值還是最小值?這個值是多少?7 以和為根的一元二次方...