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

目录

    • 一、基础语法
    • 二、设置消息等级
    • 三、示例
      • 3.1 设置消息等级
      • 3.2 打印普通消息

一、基础语法

为了可以显示编译信息,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")

打印结果如下:

[CMake教程] 使用 message() 打印信息_第1张图片

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}")

结果为:
[CMake教程] 使用 message() 打印信息_第2张图片

你可能感兴趣的:(CMake,cmake,打印信息,message)