為什麼選擇makefile

時間 2021-06-01 03:38:06

1樓:qin meng

GNU的Make和指令碼不是乙個東西,雖然看著很像其實完全不是一碼事。

為什麼選擇makefile,個人覺得有以下幾點:

1、首先,Shell有好多種, Bash、ash、csh等等,甚至dos command,雖然看起來類似,但實際上語法細微差別很多,寫通用的shell指令碼其實是很有挑戰的。如果用shell來寫工程的build檔案,不是不可以,但是移植性會很差。

2、Shell雖然靈活,但是實際上更多的依賴於系統中其他的命令,比如sed、awk、grep、echo等等。shell更像是功能合集,靈活的同時難題也很多,你沒辦法保證這些工具在所有平台上的行為都是一致的。

3、make的思路其實跟shell完全不同,Makefile更像是巨集替換文法語言,精妙之處在於處理各種檔案和串的方式都是字串的替換過程,這個過程不是"順序執行的「,而是發生在編譯之前,在執行過程則完全依賴於shell,跟指令碼無任何區別。shell指令碼始終是執行的,對於處理串的來說相比之下要遜色很多,而且重度依賴於sed和awk等等。

4、make另外乙個好處就是編譯的依賴,可以說make就是為了解決這個問題而生的,shell也不是不能解決這個問題,但是相比之下要麻煩的多,想想用指令碼處理檔案的時間和內部標頭檔案的依賴關係是個多麼煩人的工作吧。

5、現在的GNU make都是支援多執行緒的,多併發、依賴關係良好的makefile會大幅度壓縮專案構建的時間,多執行緒的指令碼也不是不行,不過這就難得多了,用檔案鎖保證某個目錄不能被同時編譯這種事對於你的指令碼來說有時候是必須的。實際上這同並行程式設計需要注意的事情一樣多,而make只需要乙個-j,那你為什麼自找麻煩呢?

2樓:jinleileiking

我覺得是歷史原因. 搞makefile的人覺得shell不爽,於是自己寫了個make.

現在其實不用糾結.批量完成編譯的.ruby,python理論上都可以.

我知道有rmake , ruby 裡的代替makefile的東東 .

3樓:孫立偉

從職責分工來說可能更加容易理解一些,Shell script是給系統管理員用的,Makefile是給軟體配置管理員或者Release Engineer用的。

為什麼選擇華為?

小抄 阿諾德丶帥 目前全世界所有中中國人裡面,我最佩服兩個人,乙個是任正非,國家科技落後成這樣還能把公司做到讓老美舉全國之力來圍賭 另乙個是我自己,天天累成狗,都快猝死兩還時刻關心著囯家大事 乙個具有強大到可怕的執行力的ZF。說幹嘛就去幹嘛,如果貫徹了意志,將會看到可怕的效率,這當然是利遠大於弊的。...

為什麼害怕選擇?

呵呵 條條大路通羅馬,無論是哪個選擇都有利弊,所以只要大膽選擇就好了,選擇的多了就不害怕了,我以前特沒有主見,但是現在有的時候特別堅持自己,總之都別太過,中間態最好。 yolo 害怕得不到心中所期待的,害怕失望,害怕尷尬,更多的可能會害怕別人看自己的眼神 心中沒有明確堅定的想法,所以才有這麼多選擇,...

你為什麼選擇活著?

Riku yui 最愚蠢的事情就是勸人快樂 世人皆苦百態的苦 你能了解多少我覺得自己的苦都無法度 普通人能理解幾分憑什麼說教父母給的生命又怎樣呢?你的選擇是是你自己的而已 知即是道 因為我明白,自我是真理 人 是自我真理完成進化過程中最重要的依據 保持人活著,能實現自我真理完成最後進化 到覺醒 直至...