makefile

来源:互联网 发布:编写高性能的JS 编辑:程序博客网 时间:2024/05/29 03:19

1 反引号、单引号、双引号的区别

`反引号 `date`  等同于  $(date)

在Linux中反引号起着命令替换的作用;将反引号中的字符串做为命令来执行;

如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中。

> echo The date is `date`

the date is 2015年 11月 25日 星期三 16:18:56 CST

shell中有两种方法作命令替换,除了反引号还可以用$(…)结构括起来,$(…)格式受到POSIX标准支持,也利于嵌套。但反引号内不能再引用反引号,而$()中可以引用反引号。

单引号、双引号用于用户把带有空格的字符串赋值给变量的分界符。
> str="Today is Monday"
> echo $str
Today is Monday
如果没有单引号或双引号,shell会把空格后的字符串解释为命令。
> str=Today is Monday
bash: is: command not found
单引号和双引号的区别:单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括①美元符号②反引号③反斜杠,这3种特殊字符将不被忽略。 不忽略美元符号意味着shell在双引号内部可进行变量名替换。
> testvalue=100
> echo 'The testvalue is $testvalue'
The testvalue is $testvalue
> echo "The testvalue is $testvalue"
The testvalue is 100


举个例子:

当前执行的脚本是经过/home/wooya/work/hi3518e/Hi3518_SDK_V1.0.A.0/mpp2/sample/venc/makefile的makefile脚本两次调用的文件中的代码;但是$(PWD)定位的路径依然是原makefile所在的路径(/home/wooya/work/hi3518e/Hi3518_SDK_V1.0.A.0/mpp2/sample/venc/makefile);

`dirname $(PARAM_FILE)`:反引号是将其中的内容作为命令也就是说执行后为:../..


 PARAM_FILE:=../../Makefile.paramSDK_PATH?=$(shell cd $(PWD)/`dirname $(PARAM_FILE)`/..; pwd)      =$(shell cd /home/wooya/work/hi3518e/Hi3518_SDK_V1.0.A.0/mpp2/sample/venc/../../..; pwd)      =$(shell cd /home/wooya/work/hi3518e/Hi3518_SDK_V1.0.A.0; pwd)      =/home/wooya/work/hi3518e/Hi3518_SDK_V1.0.A.0

dirname命令 :找到上层目录

`PARAM_FILE:=../../Makefile.param`
`drname $(PARAM_FILE)`
`dirneme ../../Makefile.param`
../..



wildcard命令:

例子:SRC  := $(wildcard *.c) 

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。







原创粉丝点击