Makefile文件中的wildcard、patsubst、notdir、obj=(dir:%.c=%.o)的用法学习

1、今天在看Makefile文件的时候看到了一个BUILD_SO = $(LSRCS:%.c=$(BUILD_DIR)/%.o) ,不太明白这个具体是什么含义。在网上找了一下根据前人的分享,自己也记录一下:

   BUILD_SO = $(LSRCS:%.c=$(BUILD_DIR)/%.o) ,这句代码的意思将变量LSRCS中所有的以.c结尾的文件都用目录BUILD_DIR下的.o替换。

另外:wildcard可以后面跟多个路径,使用方法如下:

  假如我在当前目录下创建一个test目录,在test 目录下创建两个文件1.c和2.c;再test目录再新建一个子目录sub,在子目录sub下新建sub1.c和sub2.c。我们在test目录下使用Makefile可以这样写:

 src=$(wildcard *.c ./sub/*.c)

all: 

     @echo $(src)

这样就会输出

1.c 2.c ./sub/sub1.c ./sub/sub2.c

使用@echo 这样终端输出的信息就是命令之后的结果,而不会在终端上把命令也打印出来。即如果去掉@ 终端打印的信息就是:

echo a.c b.c ./sub/sub1.c ./sub/sub2.c

1.c 2.c ./sub/sub1.c ./sub/sub2.c

这样一个结果。

如果在输出的结果中不想带./sub/这个路径的话,可以使用notdir,使用方法:

 dir=$(notdir $(src))

这样输出出来就是:1.c 2.c sub1.c sub2.c了。

obj=$(patsubst %.c,%.o,$(dir)),把上面$(dir)变量里面以.c结尾的文件全部替换为.o结尾。

跟这个等效的一句程序是上面那句: BUILD_SO = $(LSRCS:%.c=$(BUILD_DIR)/%.o) 类似,

obj=$(dir:%.c=%.o);

他的标准格式应该是:
$(var:a=b) 或 ${var:a=b}
它的含义是把变量var中的每一个值结尾用b替换掉a。

--------------------------------------------------------------------------------------------------------------------

补充:

1、Makefiel中foreach的使用:

通用表达式: $(foreach  <var>,<list>,<text>)

这个的意思就是:把list中遍历一遍,取出其中的每一个单词放到 var中,最后按照执行text的表达式。执行text表达式的时候,每次返回一个字符串,然后以空格隔开,最后text返回的每个字符串组成的整个字符都将是foreach函数的返回值。

 

 

 

 

 

清华大学出品的R语言全套课程PPT学习课件,非常适合大学生和职场人士学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~ (1)清华大学精品数据科学R语言全套课程PPT课件含习题(26页) 第1章 R语言绪论(1) (2)清华大学精品数据科学R语言全套课程PPT课件含习题(27页) 第2章 R语言入门 (3)清华大学精品数据科学R语言全套课程PPT课件含习题(53页) 第3章 数据模型 (4)清华大学精品数据科学R语言全套课程PPT课件含习题(15页) 第4章 数据准备 (5)清华大学精品数据科学R语言全套课程PPT课件含习题(66页) 第5章 数据可视化 (6)清华大学精品数据科学R语言全套课程PPT课件含习题(35页) 第6章 数据探索 (7)清华大学精品数据科学R语言全套课程PPT课件含习题(38页) 第7章 数据变换 (8)清华大学精品数据科学R语言全套课程PPT课件含习题(20页) 第8章 高级编程 (9)清华大学精品数据科学R语言全套课程PPT课件含习题(63页) 第9章 数据建模 (10)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第10章 数据评估 (11)清华大学精品数据科学R语言全套课程PPT课件含习题(21页) 第11章 影响大学平均录取分数线因素分析 (12)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第12章 收视率分析 (13)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第13章 RHadoop (14)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第14章 Rspark
清华大学出品的R语言全套课程PPT学习课件,非常适合大学生和职场人士学习,也适合老鸟复习回顾,完全可用于自学入门,很经典好用的PPT课件哦~ (1)清华大学精品数据科学R语言全套课程PPT课件含习题(26页) 第1章 R语言绪论(1) (2)清华大学精品数据科学R语言全套课程PPT课件含习题(27页) 第2章 R语言入门 (3)清华大学精品数据科学R语言全套课程PPT课件含习题(53页) 第3章 数据模型 (4)清华大学精品数据科学R语言全套课程PPT课件含习题(15页) 第4章 数据准备 (5)清华大学精品数据科学R语言全套课程PPT课件含习题(66页) 第5章 数据可视化 (6)清华大学精品数据科学R语言全套课程PPT课件含习题(35页) 第6章 数据探索 (7)清华大学精品数据科学R语言全套课程PPT课件含习题(38页) 第7章 数据变换 (8)清华大学精品数据科学R语言全套课程PPT课件含习题(20页) 第8章 高级编程 (9)清华大学精品数据科学R语言全套课程PPT课件含习题(63页) 第9章 数据建模 (10)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第10章 数据评估 (11)清华大学精品数据科学R语言全套课程PPT课件含习题(21页) 第11章 影响大学平均录取分数线因素分析 (12)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第12章 收视率分析 (13)清华大学精品数据科学R语言全套课程PPT课件含习题(18页) 第13章 RHadoop (14)清华大学精品数据科学R语言全套课程PPT课件含习题(25页) 第14章 Rspark
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值