makefile 学习笔记

变量

变量操作符

= 直接对变量赋值,

:= : 右侧是否有变量,如有变量且变量的定义在后边,则忽略该右侧变量,其他情况同=号

+= : 追加赋值

?= : 如果符号左侧的变量已经定义过则跳过该句。

变量高级用法

1. 变量值的替换

  1. (var:a=b)"或是{var:a=b}

把变量"var"中所有以"a"字串"结尾"的"a"替换成"b"字串

例:

foo := a.o b.o c.o

bar := $(foo:.o=.c)

  1. "静态模式"

foo := a.o b.o c.o

bar := $(foo:%.o=%.c)

2.把变量的值再当成变量

x = y

y = z

a := ( ( ((x)

意思为: a:= $(y) => a:= z

比较语法

<conditional-directive>

<text-if-true>

else

<text-if-false>

endif

ifneq

ifeq

使用例子:

ifeq (<arg1>, <arg2>)

ifeq '<arg1>' '<arg2>'

ifeq "<arg1>" "<arg2>"

ifeq "<arg1>" '<arg2>'

ifeq '<arg1>' "<arg2>"

ifdef <variable-name>

如果变量 <variable-name>的值非空,那到表达式为真。否则,表达式为假。当然,<variable-name>同样可以是一个函数的返回值。注意,ifdef 只是测试一个变量是否有值,其并不会把变量扩展到当前位置。

内部函数

字符串处理函数

  • 符串替换函数 subst :

格式:$(subst <from>,<to>,<text>)

功能:把字串<text>中的<from>字符串替换成<to>。

返回:函数返回被替换过后的字符串。

  • 模式字符串替换函数

$(patsubst <pattern>,<replacement>,<text>)

格式:模式字符串替换函数------patsubst。

功能:查找<text>中的单词(单词以"空格"、"Tab"或"回车""换行"分隔)是否符

合模式<pattern>,如果匹配的话,则以<replacement>替换。

返回:函数返回被替换过后的字符串。

$(patsubst %.c,%.o,x.c.c bar.c)

把字串"x.c.c bar.c"符合模式[%.c]的单词替换成[%.o],返回结果是"x.c.o bar.o"

  • 去空格函数

格式 : $(strip\ )

功能 : 去掉<string>字串中开头和结尾的空字符

返回 : 被去掉空格的字符串值

  • 查找字符串函数

格式: $(findstring <find>,<in>)

功能:在字串<in>中查找<find>字串。

返回:如果找到,那么返回,否则返回空字符串

  • 过滤函数

格式:$(filter <pattern...>,<text>)

功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式。

返回:返回符合模式<pattern>的字串。

  • 反过滤函数

格式: $(filter-out <pattern...>,<text>)

功能:以<pattern>模式过滤<text>字符串中的单词,去除符合模式<pattern>的单词。可以有多个模式。

返回:返回不符合模式<pattern>的字串。

  • 排序

格式: $(sort <list>)

功能:给字符串<list>中的单词排序(升序)。

返回:返回排序后的字符串。

  • 取单词函数

格式: KaTeX parse error: Undefined control sequence: \< at position 7: (word \̲<̲n>,\<text>) 功能:...(word 2, foo bar baz)返回值是"bar"。

  • 取单词串函数

格式:$(wordlist <s>,<e>,<text>)

功能:从字符串<text>中取从<s>开始到<e>的单词串。<s>和<e>是一个数字。

返回:返回字符串<text>中从<s>到<e>的单词字串。如果<s>比<text>中的单词数要大,那么返回空字符串。如果<e>大于<text>的单词数,那么返回从<s>开始,到<text>结束的单词串。

示例: $(wordlist 2, 3, foo bar baz)返回值是"bar baz"。

  • 统计单词个数

格式 : $(words <text>)

功能:统计<text>中字符串中的单词个数。

返回:返回<text>中的单词数。

  • 首单词函数

$(firstword <text>)

功能:取字符串<text>中的第一个单词。

返回:返回字符串<text>的第一个单词

相关推荐
scdifsn2 小时前
动手学深度学习12.7. 参数服务器-笔记&练习(PyTorch)
pytorch·笔记·深度学习·分布式计算·数据并行·参数服务器
DevSecOps选型指南2 小时前
2025软件供应链安全最佳实践︱证券DevSecOps下供应链与开源治理实践
网络·安全·web安全·开源·代码审计·软件供应链安全
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
喜欢吃燃面3 小时前
C++刷题:日期模拟(1)
c++·学习·算法
国科安芯3 小时前
抗辐照MCU在卫星载荷电机控制器中的实践探索
网络·嵌入式硬件·硬件工程·智能硬件·空间计算
2301_797604244 小时前
学习记录:DAY32
学习
EasyDSS4 小时前
国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
网络·人工智能
玩转4G物联网4 小时前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
蓝婷儿4 小时前
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
开发语言·python·学习
派阿喵搞电子4 小时前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络