关于CMake中引号用法的小结

CMake中引号的用法

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

定义变量时使用引号

例1:

1

2

3

4

5set(TITLE learn cmake quotes!)

message(${TITLE})

输出:

learncmakequotes!

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

1

2

3foreach(e ${TITLE})

message(${e})

endforeach()

使用变量时使用引号

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

例2:

1

2

3

4message("${TITLE")

输出:

learn;cmake;quotes!

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

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

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

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

例3:

1

2

3

4

5

6

7set(TITLE "learn cmake quotes!")

message(${TITLE})

message("${TITLE}")

输出:

learn cmake quotes!

learn cmake quotes!

总结引号对于CMake中变量的定义,其功能主要是当有空格的时候,区别变量时一个数组还是纯粹的字符串;

在使用的时候,对于普通字符串,加不加引号没什么区别,而对于数组,加引号会将数组以分号间隔输出,而不加引号则是直接拼接数组。

c语言中变量要加引号吗,CMake中引号用法总结相关推荐

  1. oracle中变量前加冒号_Oracle通配符,运算符的使用, 冒号问题

    >=.<=:大于等于,小于等于 =:等于 !=,<>,^=:不等于 包含:in.not in exists.not exists 范围:between...and.not be ...

  2. python中变量的定义、命名_python中变量的定义、命名

    变量 1.什么是变量? 变量名只有在第一次出现才是定义变量(变量名再次出现,不是定义变量,而是直接使用之前定义的变量) 2.变量的定义 在 python 中,每个变量在使用前都必须赋值,变量赋值以后该 ...

  3. Android中获取WebView加载的html中console.log输出的内容

    场景 Android中使用WebView加载本地html并支持运行JS代码和支持缩放: Android中使用WebView加载本地html并支持运行JS代码和支持缩放_BADAO_LIUMANG_QI ...

  4. 浅谈Android中的异步加载之ListView中图片的缓存及优化三

    隔了很久没写博客,现在必须快速脉动回来.今天我还是接着上一个多线程中的异步加载系列中的最后一个使用异步加载实现ListView中的图片缓存及其优化.具体来说这次是一个综合Demo.但是个人觉得里面还算 ...

  5. C语言中变量名加括号,为什么在声明变量时C ++允许我们在括号内将变量名括起来?...

    弑天下 通常允许在此类声明中使用括号,因为从语法的角度来看,声明总是像这样: ;例如,在以下声明中:int* p[2];" front type"是int(不是int*),&quo ...

  6. c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...

    C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用.如果有一些C++知识记不清楚了,它可以帮你很快回 ...

  7. python变量后面加星号_Python开发中关于参数使用的几点建议 -- 1

    减少使用位置参数 使用可选参数(*args)可以使方法看起来更清晰,减少视觉噪音.例如,你想要记录一些代码调试信息,如果使用固定参数,那么你的方法可能就像下面的示例一样接收两个参数: 如果你在调用这个 ...

  8. oracle中变量前加冒号_oracle变量的定义和使用【转】

    在程序中定义变量.常量和参数时,则必须要为它们指定PL/SQL数据类型.在编写PL/SQL程序时,可以使用标量(Scalar)类型.复合(Composite)类型.参照(Reference)类型和LO ...

  9. c语言哪些变量不要加锁,[转]关于ReentrantLock中线程读某个变量是否需要加锁

    我在使用ReentrantLock类对变量进行多线程累加时,调用了lock()和unlock()方法,但读取该变量时我未加锁,结果是能正确执行,代码如下: public class Main { pr ...

  10. oracle中变量前加冒号_ORACLE 变量的定义和使用

    在程序中定义变量.常量和参数时,则必须要为它们指定PL/SQL数据类型.在编写PL/SQL程序时,可以使用标量(Scalar)类型.复合(Composite)类型.参照(Reference)类型和LO ...

最新文章

  1. 脑智前沿科普|虚拟现实如何欺骗你的大脑
  2. 【VM单机模拟系列】VMware P2V简单实现
  3. Python colormap库的安装和使用
  4. 好吧,如果一定要RESTFUL的DJANGO
  5. (39)FPGA按键设计(第8天)
  6. MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析
  7. php html小项目,使用PHP把HTML生成PDF文件的几个开源项目介绍
  8. 机器学习决策树_机器学习-决策树 Decision Tree
  9. 2021-06-21结构伪类选择器
  10. rk3399 rt5640 录音调试记录
  11. VS2005透过SourceOffSite访问VSS2005的设置方法
  12. 阿里云服务器如何购买?三种购买阿里云服务器方式教程分享
  13. 10个免费商用的图片网站分享
  14. uni 获取本地文件_uni-app 图片(文件) 本地存储解决方案
  15. MPEG-4与H264区别,编码及应用
  16. Centos yum和pip下载离线安装包
  17. html5 基本知识
  18. ios 渐变透明背景_利用PS绘制唯美梦幻多边形背景图
  19. Java实现凯撒密码、维吉尼亚密码、双换位密码、RC4算法加密
  20. 设计模式-抽象工厂总结

热门文章

  1. 你说你懂计算机网络,那这些你都知道吗
  2. 借助 Lucene.Net 构建站内搜索引擎(上)
  3. 澳洲国立与渥太华计算机科学,山东小伙斩获渥太华电子工程专业及多伦多计算机科学专业录取!...
  4. ios-GET和POST
  5. 【AI创造营】网抑云选手等级鉴定器
  6. 渗透之——使用Metasploit实现基于SEH的缓冲区溢出攻击
  7. 古筝数据matlab格式2
  8. 北四环的杰西·利弗莫尔:一个中国投机客的传说
  9. ps如何用创建和使用动作
  10. 股票中,什么是滚动市盈率,有什么作用?