CMake —— 3、cmake注释、Message、变量、引用其他.cmake文件(附:综合示例)

最终示例运行结果

在这里插入图片描述


CMakeLists.txt中的注释

单行注释:

单行注释在注释文字前加’#'号即可,例如:

#我是单行注释

多行注释(CMake3.0之前版本不支持此种多行注释(括号注释)):

多行注释使用"#[[…]]"将内容包括起来即可,例如:

#[[
我是多行注释
我也叫括号注释
]]

在这里插入图片描述

CMakeLists.txt中的 Message

     message 用于打印、输出信息,类似于 Linux 的 echo 命令。

message([< mode >] “message text” …) # 信息内容以空格分开
–log-level=<ERROR|WARNING|NOTICE|STATUS|VERBOSE|DEBUG|TRACE>

# 示例1,输出为"helloworld"
message("hello" #[[我是括号注释]] "world")

# 示例2
message(WARNING "hello" #[[我是括号注释]] "world")

在这里插入图片描述

CMakeLists.txt中的变量

     变量使用关键字set,将⼀个CMAKE 变量设置为给定值。set(< variable > ) 将变量< variable >的值设置为< value >,如果没有指定< value >那么这个变量就会被撤销⽽不是被设置。

set(var1 "变量测试")
set(var2 9527)
message(WARNING "hello" #[[我是括号注释]] "\${var1}:" ${var1} " var2:${var2}")

     CMake系统提供的内建变量

变量名变量用途描述
PROJECT_NAME提供信息的变量project()设置的项目名称
BUILD_SHARED_LIBS改变⾏为的变量
add_library()
ON : 创建共享库
OFF : 创建静态库

在这里插入图片描述

     示例:对工程名使用CMake提供信息的变量-“PROJECT_NAME ”

#[[
    将LogLib工程编译输出动态链接库,
    TestLog工程输出为exe。它将调用LogLib输出的库
]]

# 最低版本支持
cmake_minimum_required(VERSION 3.16)

# 工程名称
set(PROJECT_NAME "AAA")
project(${PROJECT_NAME})

# 工程包含库的头文件路径
include_directories("./LogLib")

# 构建编译输出的库(库名称 动态库(静态库填STATIC) 库工程下文件名,.h可不用写)
add_library(LogLib  SHARED ./LogLib/XLog.cpp)

# 构建执行程序(项目名称 工程下文件名,.h可不用写)
add_executable(${PROJECT_NAME} TestLog/main.cpp)

# 工程需要连接的库名
target_link_libraries(${PROJECT_NAME} LogLib)

CMakeLists.txt中引用其他.cmake文件](https://i-blog.csdnimg.cn/direct/d26ff17546134b308af76aaf579e8661.png)

     从给定的⽂件中读取CMake 的列表⽂件。include(file [OPTIONAL] [RESULT_VARIABLEVAR ] ) 从给定的⽂件中读取CMake 的清单⽂件代码。在清单⽂件中的命令会被⽴即处理。如果指定了OPTIONAL 选项,那么如果被包含⽂件不存在的话,不会报
错。如果指定了RESULT_VARIABLE 选项,那么var 或者会被设置为被包含⽂件的完
整路径,或者是NOTFOUND,表示没有找到该⽂件。

include("xxx.cmake")				// 文件不存在报错
include("xxx.cmake" OPTIONAL)		// 文件不存在不报错

综合示例 - 编译多文件源码

     源码文件结构如下
在这里插入图片描述


     CMakeLists.txt

# cmake最低版本要求
cmake_minimum_required(VERSION 3.28)

# 项目名称
project("auto_src_cmake")

# 头文件路径
include_directories("./include")

# 源文件路径
aux_source_directory("./" src1)
aux_source_directory("./src" src2)

# 设置项目输出程序配置(目录自动查找文件)
add_executable(${PROJECT_NAME} ${src1} ${src2})


     编译运行

在这里插入图片描述

关注

笔者 - jxd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

信必诺

嗨,支持下哥们呗。

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

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

打赏作者

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

抵扣说明:

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

余额充值