关于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中变量的定义,其功能主要是当有空格的时候,区别变量时一个数组还是纯粹的字符串;
  • 在使用的时候,对于普通字符串,加不加引号没什么区别,而对于数组,加引号会将数组以分号间隔输出,而不加引号则是直接拼接数组。
目录
相关文章
|
2天前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
|
3月前
|
存储 编译器 Shell
cmake基于语法和应用
cmake基于语法和应用
|
3月前
|
Python
python中注释使用三个引号 """ 或 '''
【8月更文挑战第1天】
313 4
|
3月前
|
Python Windows Perl
python 字符串前加r b u f 含义
python 字符串前加r b u f 含义
38 0
|
4月前
|
Python
python中语法缺少冒号处理
【7月更文挑战第8天】
75 3
|
6月前
|
IDE 开发工具 C++
|
6月前
|
Python
Python中的r字符串前缀及其用法详解
Python的r字符串前缀用于创建原始字符串,不解析转义字符。在处理文件路径、正则表达式和特殊字符时特别有用。例如,`r'C:\path'`会保持反斜杠原样,而`'\n'`会被解释为换行。r字符串前缀不能用于变量或表达式,且仅影响字符串本身。了解这一特性有助于编写更清晰、准确的代码。
330 0
|
6月前
|
编译器 C语言
gcc/g++语法
gcc/g++语法
|
编译器 Python 容器
Python的运算符,变量名,转义字符,注释等
Python的运算符,变量名,转义字符,注释等
101 0
|
缓存
关于CMake中不同变量的用法与总结
关于CMake中不同变量的用法与总结
160 0