关于CMake中引号用法的说明

简介: 关于CMake中引号用法的说明

CMake中引号的用法


在CMake中定义和使用变量时,可以使用引号也可以不使用引号,并且它们会产生不同的结果。


定义变量时使用引号


例1:


set(TITLE learn cmake quotes!)
message(${TITLE})
输出:
learncmakequotes!


可以看到字符串中间的空格没了,实际上,当我们不用引号定义变量的时候,相当于我们定义了一个包含多个成员的字符串数组,对于例1是:learn, cmake和quotes!。于是,当我们使用message输出的时候,其实是挨着输出了这5个元素,结果就是learncmakequotes!了。我们也可以用foreach验证下这个结果:


foreach(e ${TITLE})
    message(${e})
endforeach()


使用变量时使用引号


对于例1中${TITLE}变量,如果使用引号,也会有不同的结果

例2:


message("${TITLE")  
输出:  
learn;cmake;quotes!


因为此时TITLE还是一个数组,我们用‘"{TITLE}还是一个数组,我们用`"TITLE还是一个数组,我们用‘"{TITLE}"`这种形式的时候,表示要让CMake把这个数组的所有值当成一个整体,而不是分散的个体。于是,为了保持数组的含义,又提供一个整体的表达方式,CMake就会用;把这数组的多个值连接起来。无论是在CMake还是Shell里,用分号分割的字符串,形式上是一个字符串,但把它当成命令执行,就会被解析成多个用分号分割的部分。

对于单一的字符串变量(不包含特殊字符),用不用引号,结果都是一样的。


定义变量时使用引号,使用的时候不用


当使用引号时,这个值就是普通的字符层,不再是数组了。

例3:


set(TITLE "learn cmake quotes!")
message(${TITLE})
message("${TITLE}")
输出:
learn cmake quotes!
learn cmake quotes!


总结


  • 引号对于CMake中变量的定义,其功能主要是当有空格的时候,区别变量时一个数组还是纯粹的字符串;
  • 在使用的时候,对于普通字符串,加不加引号没什么区别,而对于数组,加引号会将数组以分号间隔输出,而不加引号则是直接拼接数组。
目录
相关文章
|
存储 缓存 测试技术
CMake String函数:如何巧妙地在cmake中操作字符串
CMake String函数:如何巧妙地在cmake中操作字符串
1362 0
|
安全 算法 编译器
【C++泛型编程 进阶篇】模板返回值的优雅处理(一)
【C++泛型编程 进阶篇】模板返回值的优雅处理
416 0
|
安全 算法 C++
【C++泛型编程 进阶篇】模板返回值的优雅处理(二)
【C++泛型编程 进阶篇】模板返回值的优雅处理
280 0
|
芯片
STM32-FreeRTOS源码下载及移植步骤(基于Keil)
STM32-FreeRTOS源码下载及移植步骤(基于Keil)
1495 0
STM32-FreeRTOS源码下载及移植步骤(基于Keil)
|
Unix Linux Shell
CMake深度解析:掌握add_custom_command,精通Makefile生成规则(三)
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
2936 2
|
Ubuntu NoSQL Linux
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】
这篇文章详细介绍了Docker的基本使用,包括Docker的安装、常用命令、架构概念等,并通过图解和实践帮助读者快速掌握Docker的使用方法。
一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】
|
缓存 算法 开发者
【cmake 基础小知识】如何在CMake项目中使用add_dependencies命令管理目标依赖关系
【cmake 基础小知识】如何在CMake项目中使用add_dependencies命令管理目标依赖关系
1059 0
|
并行计算 编译器 C#
"CMake高手进阶秘籍:解锁高级技巧,实践最佳策略,让你的项目构建如丝般顺滑,效率飙升!"
【8月更文挑战第11天】CMake是现代软件开发的关键构建系统,其跨平台与灵活配置特性简化了复杂项目的构建流程。本文探讨CMake的高级技巧与最佳实践,包括升级至最新版本以利用新功能;采用面向目标的编程方法,增强项目清晰度与可维护性;运用CMake预设统一多平台构建配置;掌握调试技巧快速定位问题;集成代码检查与格式化工具保障代码质量;以及启用并行构建提升构建效率。通过这些策略,开发者能够更高效地管理大型项目。
321 3
|
算法 编译器 C语言
【CMake install 命令】精通CMake安装:灵活、高效的构建和部署
【CMake install 命令】精通CMake安装:灵活、高效的构建和部署
3160 0
|
编译器 C语言 C++
C/C++编译优化技巧:预编译头文件(PCH)使用方法
C/C++编译优化技巧:预编译头文件(PCH)使用方法
1401 1