您当前的位置: 首页 > 

我什么都布吉岛

暂无认证

  • 1浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

(十三)CMake MESSAGE和PROJECT

我什么都布吉岛 发布时间:2022-03-12 22:41:20 ,浏览量:1

一、MESSAGE

MEESSAGE的功能是记录一个信息。当我们执行“编译”含有message命令的代码时,将会在终端打印指定内容。如果超过一个信息字符串,它将会拼接成一个信息(无缝连接)。

MESSAGE报告的信息可以是:

  • 普通信息
  • 报告检查信息

这里只了解前者:

message([] "message text" ...)

其中mode是信息的类型,他将会影响CMake接下来的处理。

其基本语法是:

  • 普通信息:message([] "message text" ...)
  • 报告检查:message( "message text" ...)

普通信息可以分为不同层次:

  • FATAL_ERROR CMAKE 错误,停止处理和产生
  • SEND_ERROR CMAKE 错误,继续处理但不产生
  • WARNING 继续处理(留空的默认值)
  • AUTHOR_WARNING CMAKE 警告,继续处理
  • DEPRECATION 是警告还是错误取决于 CMAKE_ERROR_DEPRECATED 或者CMAKE_WARN_DEPRECATED
  • NOTICE或空 表示重要标准错误引起用户注意
  • STATUS 用户可能感兴趣的信息,该信息应该不超过一行简明扼要

在3.17版本后,新出现的信息为报告检查信息,其语法是:

message( "message text" ...)
  • VERBOSE 更详细的信息,这些信息大部分人都不感兴趣,除非你是一个项目构建人员
  • DEBUG 项目本身开发人员,而不是那些只想编译的人员。
  • TRACE 临时信息

一个非常简单的例子:

cmake_minimum_required(VERSION 3.22)
project(Demo)

set(CMAKE_CXX_STANDARD 14)
message(hello)
add_executable(untitled main.cpp)

打印的结果如下: 在这里插入图片描述

二、PROJECT

设置一个项目的名字。语法如下:

project( [...])
project(
        [VERSION [.[.[.]]]]
        [DESCRIPTION ]
        [HOMEPAGE_URL ]
        [LANGUAGES ...])

使用project命令的同时,cmake处理器还同时还设置了几个变量:

自动定义的变量名PROJECT_SOURCE_DIR, _SOURCE_DIRAbsolute path to the source directory for the project.PROJECT_BINARY_DIR, _BINARY_DIRAbsolute path to the binary directory for the project.PROJECT_IS_TOP_LEVEL, _IS_TOP_LEVEL是否为最顶层New in version 3.21. 例子
PROJECT(projectname [CXX][C][Java])

命令用于指示名称,并且可以指定工程支持的语言,通常可以忽略。隐式定义了两个CMake变量,分别是:

  • _BINARY_DIR
  • _SOURCE_DIR

上面的两个变量第一个下划线前的字符串等于PROJECT里面的字符串。为了打印两个CMake变量,需要用到MESSAGE打印字符串。

Project(HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

利用cmake程序“编译”CMakeLists.txt文件,运行的结果如下,可以看到MESSAGE命令打印了变量的值,似乎都等于当前CMakeLists.txt所在目录。

-- This is BINARY dir /home/junwu/Project/CMakeTest
-- This is SOURCE dir /home/junwu/Project/CMakeTest
-- Configuring done
-- Generating done
-- Build files have been written to: /home/junwu/Project/CMakeTest

[1] https://www.cnblogs.com/52php/p/5681745.html

【20220623】 重新整理了message部分描述

关注
打赏
1658157489
查看更多评论
立即登录/注册

微信扫码登录

0.0384s