cmake:message àì夳堔傛蜴生んèń 2022-10-11 14:52 159阅读 0赞 日志消息。 # 概要 # 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
还没有评论,来说两句吧...