CMake多行注释以及通过Message打印不同级别日志

1 CMake注释

1.1 单行注释

  • CMake中单行注释时以 # 开头。
  •   # 指定CMake最低版本
      cmake_minimum_required(VERSION 3.20)
      
      # 这是注释
      project(myproject)
    

1.2 多行注释

  • 多行注释时,以 #[[ 开头,以 ]] 结尾,中间都可以写注释内容。3.0之前的版本不支持。
  •   # 指定CMake最低版本
      cmake_minimum_required(VERSION 3.20)
      
      #[[
      	这是注释
      	这也是注释
      ]]
      project(myproject)
    

2 CMake Message 日志打印

  • CMake中的Message主要用于打印日志。

2.1 基础日志打印

  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印===")
        message("===arg1===" "===arg2===")
      
  • 打印结果
    • 在这里插入图片描述

2.2 指定日志级别

  • Message支持打印日志级别
  • 日志级别有以下几种
    • FATAL_ERROR: 停止cmake运行和生成
    • SEND_ERROR: cmake继续运行,生成跳过
    • WARNGING: 打印警告信息
    • NOTICE: 日志级别默认为NOTICE
    • STATUS: 针对项目用户的信息
    • VERBOSE: 针对项目用户的详细信息
    • DEBUG
    • TRACE
  • 可通过 –log-level 参数指定日志级别,默认打印的是 STATUS 级别,即 VERBOSE、DEBUG和TRACE级别不会打印,如果要打印,需要通过 --log-level 参数指定。

FATAL_ERROR

  • 打印 FATAL_ERROR 级别的日志后,后面的语句都不会执行。
  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        # 这一句打印后,cmake会停止执行,后面的语句不会再执行
        message(FATAL_ERROR "FATAL_ERROR") 
        message("FATAL_ERROR after")
        
        message("===日志打印结束===")
      
  • 打印结果,可以看到后面的日志没有再打印,cmake停止执行。
    • 在这里插入图片描述

SEND_ERROR

  • 打印 SEND_ERROR 级别的日志后,生成可执行程序或者库文件的语句不会执行,其他语句依旧可以执行。
  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        # 这一句打印后,其他语句会执行,但生成可执行程序或者生成库的语句不会执行
        message(SEND_ERROR "SEND_ERROR") 
        message("SEND_ERROR after")
        
        # 这一句不会执行,不会生成可执行程序
        add_executable(myproject ${PROJECT_SOURCE_DIR}/main.cpp)
        
        # 这一句日志打印依旧可以执行
        message("add_executable after")
      
        message("===日志打印结束===")
      
  • 打印结果
    • 在这里插入图片描述

WARNING

  • 打印WARNING级别日志后,不影响cmake执行,也不影响生成可执行程序和库文件。开发者可自行决定是否处理警告信息。
  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        message(WARNING "WARNING") 
        message("WARNING after")
        
        # 生成可执行程序
        add_executable(myproject ${PROJECT_SOURCE_DIR}/main.cpp)
        
        # 这一句日志打印依旧可以执行
        message("add_executable after")
        
        message("===日志打印结束===")
      
  • 打印结果
    • 在这里插入图片描述

NOTICE

  • 默认的级别就是NOTICE,从NOTICE开始,不会再打印行号。
  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        # 这是 WARNING 级别
        message(WARNING "WARNING")
        # 这是NOTICES级别 
        message(NOTICE "NOTICE")
        
        # 生成可执行程序
        add_executable(myproject ${PROJECT_SOURCE_DIR}/main.cpp)
        
        # 这个也是NOTICE级别
        message("add_executable after")
        
        message("===日志打印结束===")
      
  • 打印结果
    • 在这里插入图片描述
    • 可以看到,WARNING 打印了行号,NOTICE 没有打印行号。

STATUS

  • STATUS级别开始的日志打印时,会在前面加上 符号
  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        # 这是 WARNING 级别
        message(WARNING "WARNING")
        # 这是NOTICES级别 
        message(NOTICE "NOTICE")
        # 这是STATUS级别 
        message(STATUS "STATUS")
        
        
        # 生成可执行程序
        add_executable(myproject ${PROJECT_SOURCE_DIR}/main.cpp)
        
        # 这个也是NOTICE级别
        message("add_executable after")
        
        message("===日志打印结束===")
      
  • 打印结果
    • 在这里插入图片描述

VERBOSE

  • 从VERBOSE开始,默认是不打印的
  • cmake示例
    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        # 这是 WARNING 级别
        message(WARNING "WARNING")
        # 这是NOTICES级别 
        message(NOTICE "NOTICE")
        # 这是STATUS级别 
        message(STATUS "STATUS")
        # 这是VERBOSE级别 
        message(VERBOSE "VERBOSE")
        
        # 生成可执行程序
        add_executable(myproject ${PROJECT_SOURCE_DIR}/main.cpp)
        
        # 这个也是NOTICE级别
        message("add_executable after")
        
        message("===日志打印结束===")
      
  • 打印结果
    • 在这里插入图片描述
    • 可以看到 VERBOSE 级别日志并没有打印
    • 如果要打印 VERBOSE 级别日志,需要通过 –log-level 参数指定
    • 在这里插入图片描述

DEBUG和TRACE

  • DEBUG和TRACE级别日志默认也是不打印,如果需要打印,通过 --log-level 参数指定日志级别,这里就不再介绍了。

2.3 将打印结果重定向到文件中

  • 可以将cmake日志重定向到文件中

  • cmake示例

    •   # 指定CMake最低版本
        cmake_minimum_required(VERSION 3.20)
        
        # 工程名
        project(myproject)
        
        # 基础日志打印
        message("===日志打印开始===")
        
        # 日志级别打印
        # 这是 WARNING 级别
        message(WARNING "WARNING")
        # 这是NOTICES级别 
        message(NOTICE "NOTICE")
        # 这是STATUS级别 
        message(STATUS "STATUS")
        # 这是VERBOSE级别 
        message(VERBOSE "VERBOSE")
        # 这是DEBUG级别 
        message(DEBUG "DEBUG")
        
        # 生成可执行程序
        add_executable(myproject ${PROJECT_SOURCE_DIR}/main.cpp)
        
        # 这个也是NOTICE级别
        message("add_executable after")
        
        message("===日志打印结束===")
      
  • 控制台打印结果

    • 在这里插入图片描述
  • 文件打印结果

    • 在这里插入图片描述
  • 默认会将 STATUS 开始的级别重定向到文件中,STATUS 之前的日志级别依旧在控制台打印。

  • 如果想将所有日志都打印到文件中,需要将错误输出也重定向到标准输出,如下

    • 在这里插入图片描述
    • 在这里插入图片描述
  • 可以看到,控制台没有打印任何信息,所有信息都打印到了文件中。

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大草原的小灰灰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值