BLP讀書摘錄和筆記——make

    許多程序員都會在自己的Makefile文件中將第一個目標定義爲all然後再列出其他從屬目標。這個約定可以明確地告訴make,在未指定特定目標時,默認應該創建哪個目標。

1 依賴關係

    先寫目標的名稱,然後緊跟着一個冒號,接着是空格或TAB,最後是空格或TAB隔開的文件列表。如果想一次創建多個文件,可以利用僞目標all。假如程序由myapp和手冊myspp.1組成,可以用下面的語句

義:

    all: myall myapp.1

2 規則

    在Makefile中空格和TAB是有區別的。規則所在行必須以TAB開頭。如果Makefile中的某行以空格結尾,這可能會導致make命令的失敗

3 註釋

    #開頭爲註釋

4 Makefile中的宏

    使用語句MACRONAME=value定義宏,$(MACRONAME)或${MACRONAME}引用宏。命令行的宏定義覆蓋Makefile中的宏定義。在Makefile之外用宏時,宏定義必須以單參數的形式傳遞,所以避免在宏定義中使用空格或給宏定義加上引號。

    make的內置宏會隨着Makefile的處理進展而發生變化。

定義
$? 當前目標所依賴的文件列表中比當前目標文件還要新的文件
$@ 當前目標的名字
$< 當前依賴文件的名字
$* 不包括後綴名的當前依賴文件的名字

 

    兩個特殊字符(出現在命令前):

    -   : 忽略所有錯誤

    @ :不要將該命令顯示在標準輸出上

5 多個目標 6 內置規則

    推導規則,make -p查看所有的內置規程

7 後綴和模式規則

    make也支持通配符語法的模式規則

8 用make管理函數庫

    該規則常見形式

.c.a:

    $(CC) –c $(CFLAGS) $<

    $(AR) $(ARRFLAGS) $@ $* .o

    $(AR) 的默認取值是ar

    $(ARRFLAGS)的默認取值是rv

9 makefile和子目錄

mylib.a:

    (cd mylibdirectory;$(MAKE))

    用括號將兩個命令括起來,確保他們只被一個單獨的shell處理

10 GNU make和gcc

    gcc –MM

    生成項目的依賴關係

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章