GNU Makefile手札
通配符
$@ 目标集合
$< 第一个依赖文件
$^ 所有依赖文件
$? 执行结果
% 表示任意长度的字符
$$$$ 随机数
@<command> 执行时不输出该命令到控制台
变量赋值
= 直接赋值
:= 未定义赋值
+= 追加赋值
?=
Makefile函数
在Makefile中可以使用函数来处理变量,函数的返回值可以当做变量来使用。
函数调用,很像变量的使用,也是以“$”来标识的,其语法为:$( )或${ }。
参数间以逗号分隔,函数名和参数间以空格分隔。函数调用以“$”开头,以圆括号或花括号把函数名和参数括起。
1) wildcard
objects := $(wildcard *.o)
等价于objects := a.o b.o xxx.o
2) subst
$(subst FROM, TO, TEXT),即将字符串TEXT中的子串FROM变为TO
3) patsubst
$(patsubst <pattern>, <replacement>, <text>)
查找text中的单词(以空格、Tab、回车、换行分隔)是否符合pattern模式,如果匹配,则以replacement替换。其中,pattern可以包括通配符%,表示任意长度的字符串。
4) filter
$(filter PATTERN…,TEXT)
函数功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所有符合此模式的单词。可以使用多个模式。模式中一般需要包含模式字符“%”。存在多个模式时,模式表达式之间使用空格分割。
返回值:空格分割的“TEXT”字串中所有符合模式“PATTERN”的字串。
5) filter-out
$(filter-out <pattern>, <text>)
顾名思义,反过滤函数,返回text中不匹配pattern的字符串
6) firstword
$(firstword NAMES…)
函数名称:取首单词函数—firstword。
函数功能:取字串“NAMES…”中的第一个单词。
返回值:字串“NAMES…”的第一个单词。
函数说明:“NAMES”被认为是使用空格分割的多个单词(名字)的序列。函数忽略“NAMES…”中除第一个单词以外的所有的单词。
7) $(var:a=b)
把var中所有以a字符串结尾的a替换成b字符串,结尾指空格或者结束符。
8) strip
$(strip STRINT)
函数名称:去空格函数—strip。
函数功能:去掉字串(若干单词,使用若干空字符分割) “STRINT”开头和结尾的
空字符,并将其中多个连续空字符合并为一个空字符。
返回值:无前导和结尾空字符、使用单一空格分割的多单词字符串。
函数说明:空字符包括空格、[Tab]等不可显示字符。
9) findstring 查找字符串函数
$(findstring <find>, <in>)
在in中查找find字符串,如果找到,返回find,否则返回空字符串。
10) sort 按照升序排序函数
$(sort <list>)
11) word
$(word <n>, <text>)
取单词函数,取text字符串中第n个字符,从1开始计数。
示例$(word 2, foo bar baz)返回bar
12) wordlist
$(wordlist <s>, <e>, <text>)
取单词串,在text中取s到e的单词串
13) words
$(words <text>)
统计text字符串中的单词个数
调试技巧
$(info xxx)
$(warning xxx)
$(error xxx)
GNU Makefile手札的更多相关文章
- GNU Makefile中的条件控制结构
在常见的编程语言中,使用条件控制结构诸如if ... else if ... else...是很寻常的事情,那么在GNU Makefile中如何使用呢? ifeq ifneq 例如:foo.sh #! ...
- 6、GNU makefile工程管理学习的一个例子
在之前我们已经学习了一个文件的编译过程,但是做过项目的都知道,一个工程中的源文件不计其数,其按类型.功能.模块会分别放在若干个目录中,而这些文件如何编译就需要有一个编译规则,虽然现在很多大型的项目都是 ...
- GNU makefile 学习 - ongoing
资料: <跟我一起写makefile>---中文,baiduNetdisk http://www.gnu.org/software/make/manual/make.html
- GNU Makefile编写
[Introduction] make 是程序员很好用的工具,如果存在makefile存在,每次更新代码,执行shell命令 shell 就可以执行所有需要编译的文件,make是根据你编写的Makef ...
- 运算类实现 及 GNU Makefile基本结构
1.运算类的实现,代码如下: (1)operator.cpp #include<iostream> #include "operator.h" using names ...
- 利用 autoconf 和 automake 生成 Makefile 文件
一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...
- unix automake 使用,快速生成你的Makefile
使用automake快速生成编译的Makefile 1,确保自己装有的软件automake autoconf 2, 1)执行autoscan 并将生成的configure.scan重命名为config ...
- makefile使用
linux make手册:http://www.gnu.org/software/make/manual/make.html 一篇文章: 假设我们有一个程序由5个文件组成,源代码如下:/*main.c ...
- 一个通用的Makefile (转)
据http://bbs.chinaunix.net/thread-2300778-1-1.html的讨论,发现还是有很多人在问通用Makefile的问题,这里做一个总结.也作为以后的参考. ...
随机推荐
- 搜索专题: HDU1429胜利大逃亡
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- Linux命令(持续更新)
1. tail 命令 tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件. tail -f filename 会把 filename 文件里的最尾部的内 ...
- 2019牛客暑期多校训练营(第八场) - B - Beauty Values - 水题
https://ac.nowcoder.com/acm/contest/888/B 实际上的确是个水题,写个小数据找个规律看看,所谓不同度,其实就是依次插入每个元素后,各种元素出现的最后位置的坐标求和 ...
- Java创建二叉树
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/yeweiouyang/article/details/37814461 二叉树的值保存在数组中,以0 ...
- [Nest] 01.初见nest.js
github nest 介绍 Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架.它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人 ...
- 使用NPOI读取Excel数据并写入SQLite
首先,我们来建一个数据库,我们就叫Hello.db(不一定是db后缀,你可以sqlite,sqlite3,db3)都可以作为识别,然后往里面建一个空的表格,如下图所示 然后建一个Excel表格,往表格 ...
- tomcat 启动日志乱码,idea中运行Tomcat也出现中文乱码:“淇℃伅”
打开到tomcat安装目录下的conf/文件夹 修改logging.properties文件, 找到 java.util.logging.ConsoleHandler.encoding = utf-8 ...
- jmeter性能压测瓶颈排查-网络带宽
问题: 有一台机器做性能压测的时候,无论开多少个线程,QPS一直压不上去,而服务器和数据库的性能指标(主要是CPU和内存)一直维持在很低的水平. 希望帮忙排查一下原因. 过去看了下进行压测的接口代码, ...
- 开发板安装google浏览器
source.list中含有https 所以在更换源之前安装 apt-get install apt-transport-https 然后更换为中科大的源貌似不行 deb https://mirror ...
- 缓存promise技术不错哦
1. pageManager.js const promiseList = {}; module.exports = { putData: function(pageName,data){ promi ...