問題一: $(CC) -c $^ -o $(ROOT_DIR)/$(OBJS_DIR)/$@ 這裏的$^和$@是設麼意思?html
通過查找,該特殊符號的用法以下:ubuntu
假如:all:library.cpp main.cpp 三個符號表明的含義以下?函數
$@
evaluates to all
$<
evaluates to library.cpp
$^
evaluates to library.cpp main.cpp
問題二: CUR_SOURCE=${wildcard *.c} 這句話的含義是? lua
使用「$(wildcard *.c)」來獲取工做目錄下的全部的.c文件列表。複雜一些用法;能夠使用「$(patsubst %.c,% $(wildcard *.c))」,首先使用「wildcard」函數獲取工做目錄下的.c文件列表;以後將列表中全部文件名的後綴.c替換爲.o。這樣咱們就能夠獲得在當前目錄可生成的.o文件列表。spa
問題三: 在VCODEC_VOLT=1.6V的狀況下,VCODEC_STEM := $(subst .,P,$(VCODEC_VOLT)) 這裏的VCODEC_STEM是多少呢?code
首先看一下subst是什麼意思?htm
$(subst <from>,<to>,<text>) 名稱:字符串替換函數——subst。 功能:把字串<text>中的<from>字符串替換成<to>。 返回:函數返回被替換事後的字符串。 示例: $(subst ee,EE,feet on the street) 把「feet on the street」中的「ee」替換成「EE」,返回結果是「fEEt on the strEEt」。
能夠看出,subst是字符串處理命令,這樣結果就很明顯了,意思是把VCODEC_VOLT=1.6V中的小數點換成P,就變成了:VCODEC_STEM=1P6V.blog
好讀書而不求甚解,這個習慣很差,要把思惟訓練的嚴謹,就要一絲不苟的去進行。文檔
針對makefile的東西,要後面繼續的深刻的分析:字符串
參考文檔: