出處:CSDN 陳浩專欄(http://blog.csdn.net/haoel/article/details/2891)
書寫命令
————
每條規則中的命令和操作系統Shell的命令行是一致的。make會一按順序一條一條的執行命令,每條命令的開頭必須以[Tab]鍵開頭,除非,命令是緊跟在依賴規則後面的分號後的。在命令行之間中的空格或是空行會被忽略,但是如果該空格或空行是以Tab鍵開頭的,那麼make會認為其是一個空命令。
我們在UNIX下可能會使用不同的Shell,但是make的命令默認是被「/bin/sh」——UNIX的標準Shell解釋執行的。除非你特別指定一個其它的Shell。Makefile中,「#」是註釋符,很像C/C++中的「//」,其後的本行字符都被註釋。

jeff71321 發表在 痞客邦 留言(0) 人氣()

出處:CSDN 陳浩專欄(http://blog.csdn.net/haoel/article/details/2890)
六、多目標
Makefile的規則中的目標可以不止一個,其支持多目標,有可能我們的多個目標同時依賴於一個文件,並且其生成的命令大體類似。於是我們就能把其合併起來。當然,多個目標的生成規則的執行命令是同一個,這可能會可我們帶來麻煩,不過好在我們的可以使用一個自動化變量「$@」(關於自動化變量,將在後面講述),這個變量表示著目前規則中所有的目標的集合,這樣說可能很抽像,還是看一個例子吧。
    bigoutput littleoutput : text.g
            generate text.g -$(subst output,,$@) > $@

jeff71321 發表在 痞客邦 留言(0) 人氣()

出處:CSDN 陳浩專欄(http://blog.csdn.net/haoel/article/details/2889)
書寫規則
————
規則包含兩個部分,一個是依賴關係,一個是生成目標的方法。
在Makefile中,規則的順序是很重要的,因為,Makefile中只應該有一個最終目標,其它的目標都是被這個目標所連帶出來的,所以一定要讓make知道你的最終目標是什麼。一般來說,定義在Makefile中的目標可能會有很多,但是第一條規則中的目標將被確立為最終的目標。如果第一條規則中的目標有很多個,那麼,第一個目標會成為最終的目標。make所完成的也就是這個目標。

jeff71321 發表在 痞客邦 留言(0) 人氣()

出處:CSDN 陳浩專欄(http://blog.csdn.net/haoel/article/details/2888)
Makefile 總述
———————
一、Makefile裡有什麼?
Makefile裡主要包含了五個東西:顯式規則、隱晦規則、變量定義、文件指示和註釋。

jeff71321 發表在 痞客邦 留言(0) 人氣()

出處:CSDN 陳浩專欄(http://blog.csdn.net/haoel/article/details/2887)

三、make是如何工作的
在默認的方式下,也就是我們只輸入make命令。那麼,
    1、make會在當前目錄下找名字叫「Makefile」或「makefile」的文件。
    2、如果找到,它會找文件中的第一個目標文件(target),在上面的例子中,他會找到「edit」這個文件,並把這個文件作為最終的目標文件。

jeff71321 發表在 痞客邦 留言(0) 人氣()

出處:CSDN 陳浩專欄(http://blog.csdn.net/haoel/article/details/2886)

概述
——
什麼是makefile?或許很多Winodws的程序員都不知道這個東西,因為那些Windows的IDE都為你做了這個工作,但我覺得要作一個好的和professional的程序員,makefile還是要懂。這就好像現在有這麼多的HTML的編輯器,但如果你想成為一個專業人士,你還是要瞭解HTML的標識的含義。特別在Unix下的軟件編譯,你就不能不自己寫makefile了,會不會寫makefile,從一個側面說明了一個人是否具備完成大型工程的能力。
因為,makefile關係到了整個工程的編譯規則。一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要後編譯,哪些文件需要重新編譯,甚至於進行更複雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。

jeff71321 發表在 痞客邦 留言(0) 人氣()

1
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。