[CMake教程] 使用 message() 打印信息

一、基础语法

为了可以显示编译信息,CMake设置了message语句,语法如下:

message([<mode>] "message to display" ...)

关于 mode 选项:

  • FATAL_ERROR: CMake Error,处理方式:停止编译和生成。
  • SEND_ERROR: CMake Error,处理方式:继续编译但会跳过生成。
  • WARNING: CMake Warning,处理方式:继续编译和生成。
  • AUTHOR_WARNING: CMake Warning,处理方式:继续编译和生成。
  • DEPRECATION: CMake Deprecation Warning,用以告警旧的方法不被支持,使用 CMAKE_WARN_DEPRECATED 使能该告警打印:
set(CMAKE_WARN_DEPRECATED FALSE) # 关闭该告警
message(DEPRECATION "The use of old_function() is deprecated")
  • (none) or NOTICE: 打印重要信息。
  • STATUS: 用户可能感兴趣的简介信息。
  • VERBOSE: 为用户提供的构建的详细信息。
  • DEBUG: 为开发人员提供的构建的详细信息。
  • TRACE: 更底层的构建的详细信息。

其中, NOTICE, VERBOSE, DEBUG, 和 TRACE 是在CMake 3.15 才被引入的新特性。

二、设置消息等级

命令行中,使用 --log-level 设置消息等级,CMake只会打印所设置等级与更高等级的消息,有效等级为:

 ERROR > WARNING > NOTICE > STATUS (default) > VERBOSE > DEBUG > TRACE

其中,对于mode类型,FATAL_ERRORSEND_ERROR属于 ERROR 级别,AUTHOR_WARNINGDEPRECATION属于 WARNING 级别。

另外,CMake 3.17 引入 CMAKE_MESSAGE_LOG_LEVEL ,使得在 CMakeLists.txt 中可以设置消息等级。

--log-level 优先级大于 CMAKE_MESSAGE_LOG_LEVEL

注意,默认等级为 STATUS ,即默认情况下,VERBOSEDEBUGTRACE 三个等级的消息不会被打印。

三、示例

3.1 设置消息等级

# CMake最低版本要求
cmake_minimum_required(VERSION 3.20)

# 项目名称
project(test_4)

# 设置消息等级
set(CMAKE_MESSAGE_LOG_LEVEL VERBOSE)

# 使能 DEPRECATION 告警
set(CMAKE_WARN_DEPRECATED TRUE)
message(DEPRECATION "The use of old_function() is deprecated")

message(TRACE "This is TRACE mode")
message(DEBUG "This is DEBUG mode")
message(VERBOSE "This is VERBOSE mode")
message(STATUS "This is STATUS mode")
message(NOTICE "This is NOTICE mode")
message(AUTHOR_WARNING "This is AUTHOR_WARNING mode")
message(WARNING "This is WARNING mode")
message(SEND_ERROR "This is SEND_ERROR mode")
message(FATAL_ERROR "This is FATAL_ERROR mode")

打印结果如下:

在这里插入图片描述

3.2 打印普通消息

平时我们使用 message() 大多数情况下只是打印一些变量与普通消息,例如 CMake学习(四) 中的隐式变量test_4_BINARY_DIRtest_4_SOURCE_DIR 可以打印输出。

project(test_4)
message("test_4_BINARY_DIR = ${test_4_BINARY_DIR}")
message("test_4_SOURCE_DIR = ${test_4_SOURCE_DIR}")

结果为:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

万俟淋曦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值