Make 官方手冊...兼紀老師閒聊 Make 的優點
撰寫 Linux 程式多的人,應該或多或少都會接觸 Make 這套「流程自動化」軟體。它可以把一大堆像咒語一樣的 Linux 指令,給一個乾淨好記的名字,然後你就把那些又臭又長的指令忘了,直接執行那個好記的名字、放鬆喝杯茶,等著工作完成。
不過 Make 也有被人詬病的地方,就是它的自動化語法實在不太親民。由於它發明於 1977 年,當時用 Linux 的人,大多是些電腦專業學者,也不會在乎語法難不難(抑或說,越難越能激起這群人喜歡挑戰的劣根性? XD)。不過一旦學會,它強大的功能實在讓人愛不釋手。我舉幾個我認為不錯的功能給大家:
(1) 目標相依(Target Dependency):你可以要求乾淨好記名字背後那沱指令,執行前必須先執行另一沱定義於其它乾淨好記名字之下的指令。也就是說,你的 Make 會越寫越輕鬆,因為之前辛苦寫好的指令有機會被「重用(音『崇用』)」(咦?「重用」不就是「物件導向」的目的嗎? XD)。如下所示:
my_command: other_command
(一堆像咒語一樣的 Linux 指令)
這會讓 my_command 所屬的那堆 Linux 指令執行前,先執行另一個名字 other_command 下所屬的那一沱 Linux 指令。
(2) 隱式規則(Implicit Rules):你要求 Make 拿 abc.o (類似 Windows 內的 abc.obj)檔加入最終執行檔,但 abc.o 根本不存在。Make 會聰明到知道 abc.o 事實上是由 abc.c (C 語言原始碼檔)編譯過來的。在人類不必介入的情況下,它會聰明地自動編譯 .c 檔成 .o 檔,然後再執行所要求的指令。這會讓 Make 語法大大縮減。因為善用「潛規則」,可少寫很多行 Linux 指令。
(3) 遞迴建造(Recursive Build):當你要求編譯如一串葡萄般複雜的子文件夾結構時,Make 若發現子文件夾內已經有 Make 指令檔了,它會全權委託該 Make 指令檔編譯當地文件夾的內容。這可以讓你撰寫「根 Make File 文件」時,適當分權各文件夾的 Make File 決定如何編譯當地文件。
(4) 與「環境變數」結合:Make 檔裡用的「變數」,根本就是 Linux 下的環境變數。也就是說,如果有個 Make 變數值是:
MY_VAR = abc
我臨時想把它改成 pqr,不必修改原始碼。只要在 Linux 命令列下執行修改「環境變數」的指令即可:
export MY_VAR = pqr
美妙的是,export MY_VAR = pqr 僅存於當下記憶體。下次重開機時,MY_VAR 又會變回 abc。很適合「臨時想改成一個值,但懶得下次改回來」的場合用。
不知不覺,這篇又變成「落落長」(台語,「冗長」之意)了。我寫這麼多,無非是希望我「嵌入式 Linux 程式設計班」的同學,除了詛咒 Make 語法怪異之餘,也能欣賞它的強大之處。「手排車」是比較難開,但要學「藤原拓海」做出過髮夾彎的「水溝蓋跑法」,麻煩您不要詛咒換檔時還要踩「庫拉幾(台語,「離合器」之意)」。
以下附上 Make 官方文件,我班上的同學,想下載 PDF 檔回去好好保存的...咳咳咳...我放在「秘密基地」裡的「eBook」資料夾...麻煩低調地搬回家觀賞... XD
http://www.gnu.org/software/make/manual/make.html
這裡有另一位國外網友,訴說他為何喜歡 Make 的原因。我大多贊同他的觀點,提供給各位參考:
http://bost.ocks.org/mike/make/
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
windows 10環境變數 在 Python 環境安裝 - 科技的旅程 的推薦與評價
安裝好之後,要設定環境變數,這樣才能”Windows 命令提示字元”下使用首先找出Python 安裝位置 ... window 7 叫我的電腦 window 10 則是找到本機. ... <看更多>