跳到主要内容

CMake 消息打印

如果你想在 CMake 配置/构建过程中打印一些提示信息或调试信息,可以使用 CMake 提供的 message() 函数。

下面将介绍 message() 函数的语法、消息类型,并通过一些示例演示如何使用它来打印消息。

语法

CMake 中 message() 函数的语法如下:

message( [STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" ...)

可以用下述可选的关键字指定消息的类型:

消息类型描述
无类型重要消息
STATUS非重要消息
WARNINGCMake 警告,会继续执行
AUTHOR_WARNINGCMake 警告(dev),会继续执行
FATAL_ERRORCMake 错误,终止所有处理过程
SEND_ERRORCMake 错误,继续执行,但是会跳过生成的步骤

CMake 的命令行工具会在 stdout 上显示 STATUS 消息,在 stderr 上显示其他所有消息。CMake 的 GUI 会在它的 log 区域显示所有消息。交互式的对话框(ccmake 和 CMakeSetup)将会在状态行上一次显示一条 STATUS 消息,而其他格式的消息会出现在交互式的弹出式对话框中。

CMake 警告和错误消息的文本显示使用的是一种简单的标记语言。文本没有缩进,超过长度的行会回卷,段落之间以新行做为分隔符。

示例

1、输出错误 FATAL_ERROR

message(FATAL_ERROR "FATAL: In-source builds are not allowed.
You should create a separate directory for build files.")

2、输出警告 WARNING

message(WARNING "OpenCV requires Android SDK tools revision 14 or newer.")

3、输出正常 STATUS

message(STATUS "Can't detect runtime and/or arch")

4、输出变量的值

先定义一个变量 USER_NAME,然后使用 STATUS 打印此变量值。

SET(USER_NAME, "GetIot.tech")
MESSAGE( STATUS "The user name = ${USER_NAME}.")

总结

CMake 提供了 message() 函数用于打印消息,它的作用相当于 C 语言中的 printf、C++ 中的 std::cout 和 Qt 中的 qDebug()。我们可以使用 message() 函数打印变量,或者其他提示信息,可以帮助我们了解 CMake 的构建过程,以及其中一些变量或者用户的变量的值。