MAKEFILE【4】-Makefile中的wildcard用法
文章目录
- 前言
前言
语法:
$(wildcard PATTERN...)
在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表
一般我们可以使用“$(wildcard *.c)”
来获取工作目录下的所有的.c
文件列表。复杂一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”
,首先使用“wildcard”
函数获取工作目录下的.c
文件列表;之后将列表中所有文件名的后缀.c
替换为.o
。这样我们就可以得到在当前目录可生成的.o
文件列表。因此在一个目录下可以使用如下内容的Makefile
来将工作目录下的所有的.c
文件进行编译并最后连接成为一个可执行文件.
#sample Makefileobjects := $(patsubst %.c,%.o,$(wildcard *.c))
foo : $(objects)cc -o foo $(objects)
这里我们使用了make的隐含规则来编译.c的源文件。对变量的赋值也用到了一个特殊的符号(:=)。
1、wildcard : 扩展通配符
2、notdir : 去除路径
3、patsubst :替换通配符
例子
建立一个测试目录,在测试目录下建立一个名为sub的子目录
$ mkdir test $ cd test $ mkdir sub
在test下,建立
a.c和b.c2
个文件,在sub
目录下,建立sa.c和sb.c2
个文件建立一个简单的Makefile
src=$(wildcard *.c ./sub/*.c) dir=$(notdir $(src)) obj=$(patsubst %.c,%.o,$(dir) ) all:@echo $(src)@echo $(dir)@echo $(obj)@echo "end"
第一行输出:
a.c b.c ./sub/sa.c ./sub/sb.c
wildcard
把 指定目录./ 和 ./sub/
下的所有后缀是c的文件全部展开。第二行输出:
a.c b.c sa.c sb.c
notdir
把展开的文件去除掉路径信息第三行输出:
a.o b.o sa.o sb.o
在
$(patsubst %.c,%.o,$(dir) )
中,patsubs
t把$(dir)
中的变量符合后缀是.c
的全部替换成.o
,
或者可以使用obj=$(dir:%.c=%.o)
效果也是一样的。
MAKEFILE【4】-Makefile中的wildcard用法相关推荐
- Makefile中的wildcard用法
Makefile中的wildcard用法 在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数"wildcar ...
- Makefile中的wildcard patsubst
在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数"wildcard",它的用法是:$(wildc ...
- linux中makefile高级用法--makefile调用makefile
一.介绍 在大型项目中,makefile调用makefile很常见,也很方便,这里给出调用方法 二.实例 1.代码树 app_top下,有顶层makefile和编译工具的设置文件Rules.make, ...
- 【makefile笔记】patsubst和wildcard函数使用小结
0x00 前言 文章中的文字可能存在语法错误以及标点错误,请谅解: 如果在文章中发现代码错误或其它问题请告知,感谢! 0x01 makefile函数调用语法 makefile函数调用原型: $(< ...
- 【Linux + Makefile】Makefile中的.PHONY作用以及赋值运算(各种=符号)的区别
笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefile的小的知识点,分享给大家. 通过阅读本文,你将了解到以下知识: 1.Makefilke中的.PHONY ...
- Makefile和automake中判断CPU位数
Makefile中: cpu_bit=$(shell getconf LONG_BIT) ifeq ($(cpu_bit),64) MY_CXXFLAGS= else MY_CXXFL ...
- linux中make的用法
一.linux中make的用法 目的: 基本掌握了make 的用法,能在Linux系统上编程. 环境: Linux系统 准备: 准备三个文件:file1. ...
- Linux之make的用法讲解,linux中make的用法
1.linux中make的用法 目的: 基本掌握了make 的用法,能在Linux系统上编程. 环境: Linux系统 准备: 准备三个文件:file1.c, file2.c, file2.h fil ...
- 浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译
1. 什么是 Makefile Makefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目.一旦写编写好 Makefile 文件,只需要一个 ma ...
最新文章
- PXE批量部署linux操作系统
- C++友元函数和友元类(二)
- php检测非法字符的一种方法
- 电脑安装软件出现更改计算机怎么回事,win10电脑总是自动安装软件怎么办
- 假笨说-谨防JDK8重复类定义造成的内存泄漏
- gedit把关键字符替换为回车键
- Gun N' Rose 小组分工、项目制品与贡献率计算
- [vue] 怎么在watch监听开始之后立即被调用?
- Android系列---JSON数据解析
- AI主播首次上岗CCTV,撒贝宁有了个虚拟孪生兄弟“小小撒”
- 如何把多个文件夹里的文件提取出来?
- html微信悬浮窗,微信悬浮窗怎么设置(微信浮窗设置的两个小技巧)
- 期末考试打乱考研数学复习,该怎么继续?
- Linux网站服务之部署Wordpress教程
- 程序员兼职网站(自由职业)
- django项目中实现excel表数据导入
- python 网络通讯 plc_Python TCP通信网络编程
- “燕云十六将”之毛毛杜倩(7)
- 论文勘误 (Paper erratum)
- symfony入门学习资料之十六:Symfony框架启动过程介绍