我所不知道的Makefile語法

 

問題一: $(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的東西,要後面繼續的深刻的分析:字符串

參考文檔:

1. https://wiki.ubuntu.com.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B0

2. http://www.javashuo.com/article/p-ygjbabyo-mh.html

相關文章
相關標籤/搜索