《跟我一起写Makefile》读书笔记(2)
四、Makefile綜述
1、makefile里有什么?
Makefile 里主要包含五個東西:顯式規(guī)則、隱晦規(guī)則、變量定義、文件指示和注釋。
(1)在 Makefile 中我們要定義一系列的變量,變量一般都是字符串;這個有點(diǎn)像C語言中的宏,當(dāng) Makefile 被執(zhí)行時,其中的變量都會被擴(kuò)展到相應(yīng)的引用位置上。
(2)文件指示,包括三個部分
- 一個是在一個 Makefile 中引用另一個 Makefile,就像 C 語言中的include 一樣;
- 另一個是指根據(jù)某些情況指定 Makefile 中的有效部分,就像 C 語言中的預(yù)編譯#if 一樣;
- 還有就是定義一個多行的命令。?
- Makefile 中只有行注釋,和 UNIX 的 Shell 腳本一樣,其注釋是用“#”字符。
- 如果要使用“#”字符,可以用反斜框進(jìn)行轉(zhuǎn)義,如:“\#”。
2、makefile的文件名
(1)默認(rèn)的情況下,make 命令會在當(dāng)前目錄下按順序找尋文件名為“GNUmakefile”、“makefile”、“Makefile”的文件;
(2)大多數(shù)的 make 都支持“makefile”和“Makefile”這兩種默認(rèn)文件名;
(3)可以使用別的文件名來書寫 Makefile,比如 : “ Make.Linux” ,“Make.Solaris”,“Make.AIX”等。
- 如果要指定特定的 Makefile,你可以使用 make 的“-f”和“--file”參數(shù),如:make -f Make.Linux 或 make --file Make.AIX。
3、引用其他Makefile文件
(1)例子如:(這里可以有空字符)include ?foo.make ?*.mk ? $(bar)?
(2)細(xì)節(jié)注意
- 被包含的文件會原模原樣的放在當(dāng)前文件的包含位置;
- 在 include前面可以有一些空字符,但是絕不能是[Tab]鍵開始;
- include和文件之間,可以用一個或多個空格隔開。
4、環(huán)境變量MAKEFILES
(1)如果你的當(dāng)前環(huán)境中定義了環(huán)境變量 MAKEFILES,那么,make 會把這個變量中的值做一個類似于 include 的動作。
(2)它和 include不同的是,從這個環(huán)境變中引入的 Makefile 的“目標(biāo)”不會起作用,如果環(huán)境變量中定義的文件發(fā)現(xiàn)錯誤,make 也會不理。
(3)這個變量中的值是其它的 Makefile,用空格分隔。
(4)建議不要使用這個環(huán)境變量,因?yàn)橹灰@個變量一被定義,那么當(dāng)你使用 make 時, 所有的 Makefile 都會受到它的影響。
5、Makefile的工作方式
(1)讀入所有的 Makefile;
(2)讀入被 include 的其它 Makefile;
(3)初始化文件中的變量;
(4)推導(dǎo)隱晦規(guī)則,并分析所有規(guī)則;
(5)為所有的目標(biāo)文件創(chuàng)建依賴關(guān)系鏈;
(6)根據(jù)依賴關(guān)系,決定哪些目標(biāo)要重新生成;
(7)執(zhí)行生成命令。
總結(jié)
以上是生活随笔為你收集整理的《跟我一起写Makefile》读书笔记(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 共轭梯度法粗浅理解
- 下一篇: 将ascii码转换成汉字