cmake:message

1059 篇文章 284 订阅

日志消息。

概要

General messages
  message([<mode>] "message text" ...)

Reporting checks
  message(<checkState> "message text" ...)

一般消息

message([<mode>] "message text" ...)

在日志中记录指定的消息文本。如果给出了多个消息字符串,则将它们连接为单个消息,字符串之间没有分隔符。

可选的< mode >关键字确定消息的类型,该类型会影响消息的处理方式:

  • FATAL_ERROR:CMake错误,停止处理并生成。
  • SEND_ERROR:出错,继续处理,但跳过生成。
  • WARNING:发出警告,继续处理。
  • AUTHOR_WARNING:CMake Warning (dev),继续处理。
  • DEPRECATION:如果CMAKE_ERROR_DEPRECATED或CMAKE_WARN_DEPRECATED变量分别被启用,则为CMake Deprecation Error或Warning,否则没有消息。
  • (none) or NOTICE:重要信息打印到stderr以引起用户的注意。
  • STATUS:项目用户可能感兴趣的主要消息。理想情况下,这些信应该简明扼要,不超过一行,但仍能提供信息。
  • VERBOSE:针对项目用户的详细信息消息。这些消息应该提供在大多数情况下不感兴趣的额外细节,但是对于那些构建项目的人来说,当他们想要更深入地了解正在发生的事情时,这些细节可能会很有用。
  • DEBUG:详细的信息性消息,用于开发人员处理项目本身,而不是只想构建项目的用户。这些消息通常不会引起构建项目的其他用户的兴趣,并且通常与内部实现细节密切相关。
  • TRACE:具有非常低级实现细节的细粒度消息。使用此日志级别的消息通常只是临时的,并且在发布项目、打包文件等之前预期会被删除。

版本3.15中的新功能:添加NOTICE, VERBOSE, DEBUG, and TRACE .

报告检查

3.17新版功能。

CMake输出中的一个常见模式是指示某种检查开始的消息,然后是报告该检查结果的另一个消息。例如:

message(STATUS "Looking for someheader.h")
#... do the checks, set checkSuccess with the result
if(checkSuccess)
  message(STATUS "Looking for someheader.h - found")
else()
  message(STATUS "Looking for someheader.h - not found")
endif()

可以用下面代替:

message(<checkState> "message" ...)

其中< checkState >必须是以下之一:

  • CHECK_START:记录一个关于将要执行的检查的简明消息。
  • CHECK_PASS:记录一个成功的检查结果。
  • CHECK_FAIL:记录一个不成功的检查结果。

在记录检查结果时,该命令会重复最近开始的尚未报告结果的检查的消息,然后是一些分隔符,然后是CHECK_PASS或CHECK_FAIL关键字之后提供的消息文本。检查消息总是报告在STATUS日志级别。

检查可能是嵌套的,并且每个CHECK_START应该恰好有一个匹配的CHECK_PASS或CHECK_FAIL。如果需要的话,CMAKE_MESSAGE_INDENT变量还可以用于向嵌套检查添加缩进。例如:

message(CHECK_START "Finding my things")
list(APPEND CMAKE_MESSAGE_INDENT "  ")
unset(missingComponents)

message(CHECK_START "Finding partA")
# ... do check, assume we find A
message(CHECK_PASS "found")

message(CHECK_START "Finding partB")
# ... do check, assume we don't find B
list(APPEND missingComponents B)
message(CHECK_FAIL "not found")

list(POP_BACK CMAKE_MESSAGE_INDENT)
if(missingComponents)
  message(CHECK_FAIL "missing components: ${missingComponents}")
else()
  message(CHECK_PASS "all components found")
endif()

上面的输出如下所示:

-- Finding my things
--   Finding partA
--   Finding partA - found
--   Finding partB
--   Finding partB - not found
-- Finding my things - missing components: B
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值