歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Makefile隱含規則

Makefile隱含規則

日期:2017/2/28 13:48:06   编辑:Linux教程

Makefile兩個隱含規則;

  1. 將所有的name.o的依賴自動推導為name.c並使用規則$(CC) -c $(FLAGS) $(CPPFLAGS)得到目標。這個規則中只有-c是隱含規則中有的,後面兩個變量是留給用戶使用的,如果-c不夠用,可以通過設置他們來改變這條隱含規則,有了這條隱含規則,下面的寫法是被允許的

    res:main.o fcn.o
    .PHONY:clean
    clean:
    rm *.o
  2. name目標依賴於name.o,其生成命令是: $(CC) $(LDFLAGS) name.o $(LOADLIBES) $(LDLIBS)。這個規則對於多個被依賴的目標文件同樣有效,例如:

    name : y.o z.o

    並且"name.c"、"y.c"和"z.c"都存在,則隱含執行:

    cc -c name.c -o name.o
    cc -c y.c -o y.o
    cc -c z.c -o z.o
    cc name.o y.o z.o -o name
    rm -f name.o
    rm -f y.o
    rm -f z.o

隱含規則變量

隱含規則中使用了很多變量,我們可以通過設置這些變量來在一定程度上控制隱含規則,我們可以在Makefile的文件中為這些變量重新賦值,也可以在命令行中傳入或者在環境變量中寫入。我們還可以通過-R來取消我們指定的變量的值對隱含規則的作用
AR函數庫打包程序。默認命令是“ar”。
AS匯編語言編譯程序。默認命令是“as”。
CCC語言編譯程序。默認命令是“cc”。
CXXC++語言編譯程序。默認命令是“g++”。
CPPC程序的預處理器(輸出是標准輸出設備)。默認命令是“$(CC) –E”。
RM刪除文件命令。默認命令是“rm –f”。
ARFLAGS函數庫打包程序AR命令的參數。默認值是“rv”。
ASFLAGS匯編語言編譯器參數。(當明顯地調用“.s”或“.S”文件時)。
CFLAGSC語言編譯器參數。
CXXFLAGSC++語言編譯器參數。
CPPFLAGSC預處理器參數。( C 和 Fortran 編譯器也會用到)。
LDFLAGS鏈接器參數。(如:“ld”)

Copyright © Linux教程網 All Rights Reserved