Makefile控制函数error和warning

Makefile控制函数error和warning

Makefile 中提供了两个控制 make 运行方式的函数。其作用是当 make 执行过程中检测到某些错误时为用户提供消息,并且可以控制 make 执行过程是否继续。这两个函数是  "error" 和 "warning",我们来详细的介绍一下这两个函数。

$(error TEXT...)

函数说明如下:

  • 函数功能:产生致命错误,并提示 "TEXT..." 信息给用户,并退出 make 的执行。需要说明的是:"error" 函数是在函数展开时(函数被调用时)才提示信息并结束 make 进程。因此如果函数出现在命令中或者一个递归的变量定义时,读取 Makefile 时不会出现错误。而只有包含 "error" 函数引用的命令被执行,或者定义中引用此函数的递归变量被展开时,才会提示知名信息 "TEXT..." 同时退出 make。
  • 返回值:空
  • 函数说明:"error" 函数一般不出现在直接展开式的变量定义中,否则在 make 读取 Makefile 时将会提示致命错误。


我们通过两个例子来说明一下;
实例 1:

  1. ERROR1=1234
  2. all:
  3. ifdef ERROR1
  4. $(error error is $(ERROR1))
  5. endif

make 读取解析 Makefile 时,如果所起的变量名是已经定义好的"ERROR1",make 将会提示致命错误信息 "error is 1234" 并保存退出。
实例 2:

  1. ERR=$(error found an error!)
  2. .PHONY:err
  3. err:;$(ERR)

这个例子,在 make 读取 Makefile 时不会出现致命错误。只有目标 "err" 被作为是一个目标被执行时才会出现。

$(warning TEXT...)

函数说明如下:

  • 函数功能:函数 "warning" 类似于函数 "error" ,区别在于它不会导致致命错误(make不退出),而只是提示 "TEXT...",make 的执行过程继续。
  • 返回值:空
  • 函数说明:用法和 "error" 类似,展开过程相同。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在 Makefile 中并不存在函数的概念,它是一种构建软件的文本文件,用于管理编译过程的配置文件。它的语法基于规则(rule)、变量定义、命令执行等。因此,在 Makefile 中没有类似函数的概念,但是可以通过定义变量和规则来实现类似函数的功能。 ### 回答2: 在Makefile中,有许多预定义函数可用于编写规则和指导构建过程。以下是一些常用的函数: 1. $(wildcard pattern):用于匹配文件名模式的所有文件,并返回匹配的文件列表。 2. $(patsubst pattern,replacement,text):通过模式替换的方式,用replacement替换text中匹配到的所有pattern,并返回替换后的结果。 3. $(notdir names):从文件名列表names中去除目录部分,返回只包含文件名的列表。 4. $(dir names):从文件名列表names中提取出目录部分,返回只包含目录名的列表。 5. $(shell command):执行命令command,并返回其输出结果。 6. $(basename names):从文件名列表names中去除文件名的后缀部分,并返回只包含文件名的列表。 7. $(suffix names):从文件名列表names中获取文件名的后缀部分,并返回只包含后缀名的列表。 8. $(addsuffix suffix,names):将后缀suffix添加到文件名列表names的每个元素后面,返回添加后的新列表。 9. $(addprefix prefix,names):将前缀prefix添加到文件名列表names的每个元素前面,返回添加后的新列表。 10. $(join list1,list2):将两个列表list1和list2按相同的索引位置合并成一个新的列表。 这些是Makefile中常用的一些函数,可以在构建过程中使用它们来处理文件名、执行命令等操作,从而更灵活和高效地进行构建。 ### 回答3: 在Makefile中,有一些常用的函数可以用来进行编译和链接等操作。以下是一些常见的函数: 1. $(shell command):执行指定的shell命令并返回其输出结果。 2. $(wildcard pattern):根据指定的通配符模式pattern匹配文件,并返回匹配到的文件列表。 3. $(foreach var, list, text):对list中的每个元素,将其赋值给变量var,并执行text中的操作。 4. $(strip string):去除字符串string中的首尾空格,并将中间的多个空格合并为一个空格。 5. $(subst from,to,text):在text中查找字符串from,并用字符串to替换它。 6. $(patsubst pattern,replacement,text):根据指定的模式pattern匹配字符串text中的内容,并用replacement进行替换。 7. $(dir names...):提取指定路径字符串names中的目录部分,并返回目录列表。 8. $(notdir names...):提取指定路径字符串names中的文件名部分,并返回文件名列表。 9. $(suffix names...):提取指定文件名字符串names中的后缀部分,并返回后缀列表。 10. $(basename names...):提取指定文件名字符串names中的基本名部分,并返回基本名列表。 11. $(addsuffix suffix,names...):给指定文件名字符串names中的每个元素添加后缀suffix。 12. $(addprefix prefix,names...):给指定文件名字符串names中的每个元素添加前缀prefix。 13. $(join list1, list2):将两个列表list1和list2中的元素按位置配对,并返回配对后的列表。 14. $(filter pattern..., text):根据指定的通配符模式pattern过滤字符串text中的内容,并返回过滤后的结果。 15. $(sort list):对列表list中的元素进行排序,并返回排序后的列表。 16. $(error text):输出错误信息text并停止Makefile的执行。 17. $(warning text):输出警告信息text,但继续Makefile的执行。 以上是一些常见的Makefile函数,它们可以在Makefile中使用,以便执行各种编译和链接操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值