006.CMake变量(下)

调试变量

在前文的演示中,使用了message()命令,该命令可以将变量的内容输出,类似于C语言里的printf函数。其完整的命令形式为:

message([mode] msg1 [msg2]...)

msg可以给出多个,但会合并在一起当做一个字符串输出。需要注意的是mode参数,其可取的关键字如下所示:

STATUS:一般的状态信息,前面通常以两个连字符开头。

WARNING:警告信息,通常会以红色显示,不会中断处理。

AUTHOR_WARNING:和WARNING相似,但只会在允许输出开发者警告信息时输出,需要命令行-Wdev参数。

SEND_ERROR:错误信息,配置过程不会中断,但没法生成目标平台的项目文件。

FATAL_ERROR:严重的错误信息,处理过程立即中断。

DEPRECATION:用于记录弃用消息的特殊类别。CMake在不断的开发进化,有些特性会弃用。此时如果使用到这部分特性,虽然可能仍旧能正确的完成任务(得益于后向兼容),但可能需要给与提示。当CMAKE_ERROR_DEPRECATED变量定义为真,则此类消息将被视为错误。如果CMAKE_WARN_DEPRECATED定义为真,则此类消息将被视为警告。如果两个变量都未定义,则不会显示消息。

如果没有提供mode关键字,则该消息将被视为重要信息,并且在不进行任何修改的情况下进行记录。但是有一点要特别注意,不提供mode关键字的时候,消息的顺序是没法保证的,可能乱序输出。(这是非常扯淡的特性,不知道为啥设计成这个样子!)

CMake提供的另一种帮助调试变量的机制是variable_watch()命令。这适用于更复杂的项目,在这些项目中,一个变量什么时候获取道值,什么时候修改值,都难以确认,该命令将记录读取或修改该变量的所有行为。

variable_watch(myVar [command])

对于绝大多数情况,只要列出要监视的变量而不使用可选命令就足够了。但是有时候可能需要进一步的控制,此时可以给出一个命令,该命令将在每次读取或修改变量时执行。命令应该是CMake函数或宏的名称(后文再说),并将传递以下参数:该变量的名字、访问类型、变量值等。但这种应用场景应该是非常少见的,我没用过不扯淡了==!

字符串操作

因为CMake所有的变量都是字符串类型的值,所以当需要设定或修改变量值的时候,可能需要对字符串进行一系列的操作,尤其是随着项目复杂性的增长,这一需求可能会越发显著。

CMake为此提供了string()命令,它提供了一系列有用的字符串处理功能,包括查找和替换操作、正则表达式匹配、大小写转换、去空格和其他常见任务。

这一部分比较琐碎,但很容易理解,文档中介绍更加详细,在此只把命令列出来,权作记录。

检索和替换:

  string(FIND <string> <substring> <out-var> [...])
  string(REPLACE <match-string> <replace-string> <out-var> <input>...)
  string(REGEX MATCH <match-regex> <out-var> <input>...)
  string(REGEX MATCHALL <match-regex> <out-var> <input>...)
  string(REGEX REPLACE <match-regex> <replace-expr> <out-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温铜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值