歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Makefile中的常用變量與函數

Makefile中的常用變量與函數

日期:2017/2/28 16:09:22   编辑:Linux教程

Makefile中的預定義變量:

  • CC,C語言編譯器的名稱,cc
  • CPP, C語言預處理器的名稱,$(CC) -E
  • CXX, C++語言的編譯器名稱,g++
  • RM,刪除文件程序的名稱,rm -f
  • CFLAGS, C語言編譯器的編譯選項,無默認值
  • CPPFLAGS,C語言預處理器的編譯選項,無默認值
  • CXXFLAGS,C++語言編譯器的編譯選項,無默認值

注:在使用RM時,一般使用如下語句: -$(RM) $(TARGET) $(OBJS), 符號“-”表示在操作失敗時不報錯,而是繼續執行。例如在不存在TARGET時將繼續刪除OBJS。

Makefile中的自動變量:

  • $*, 表示目標文件的名稱,不包含擴展名
  • $@, 表示目標文件的名稱,包含擴展名
  • $+, 表示所有的依賴文件,以空格隔開,可能含有重復的文件
  • $^, 表示所有的依賴文件,以空格隔開,不重復
  • $<, 表示依賴性中第一個依賴文件的名稱
  • $?, 依賴項中,所有比目標文件新的依賴文件
搜索路徑:
  • VPATH,路徑之間用:隔開
聲明偽目標:
  • .PHONY:clean
Makefile中的函數:
  • wildcard, 用法$(wildcard PATTERN), 查找當前目錄下所有符合PATTERN的文件,返回文件名,用空格隔開,如$(wildcard *.c)
  • patsubst, 用法$(patsubst PATTERN,REPLACEMENT,SOURCE), 查找SOURCE中符合PATTERN的單詞,用REPLACEMENT規則替換,注意,要使用%通配符表示0到n個字符。例:$(patsubst %.c, %.o, $(wildcard *.c))
  • foreach,一般用於多目錄下文件的遍歷。用法$(foreach VAR,LIST,TEXT), 將LIST字符串中一個空格分隔的單詞,先傳給VAR,再執行TEXT的表達式,TEXT表達式的返回值作為整個foreach的返回值。
Copyright © Linux教程網 All Rights Reserved