我所不知道的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

相关文章
相关标签/搜索