双引号的作用
CMake 中,双引号的作用我们可以从两个方面进行介绍,命令参数和引用变量。
命令参数
调用命令时,参数可以使用双引号,譬如:
project("HELLO")
也可以不使用双引号,譬如:
project(HELLO)
那它们有什么区别呢?在本例中是没有区别的,命令中多个参数之间使用空格进行分隔,而 cmake 会将双引号引起来的内容作为一个整体,当它当成一个参数,假如你的参数中有空格(空格是参数的一部分),那么就可以使用双引号,如下所示:
message(Hello World)
message("Hello World")
在这个例子中,第一个 message 命令传入了两个参数,而第二个 message 命令只传入一个参数;在第一 个 message 命令中,打印信息时,会将两个独立的字符串 Hello 和 World 都打印出来,而且 World 会紧跟在 Hello 之后,如下:
HelloWorld
而第二个 message 命令只有一个参数,所以打印信息如下:
Hello World
这就是双引号在参数中的一个作用。
引用变量
我们先来看个例子,如下所示:
# CMakeLists.txt
set(MY_LIST Hello World China)
message(${MY_LIST})
这个例子的打印信息如下:
Hello;World;China
因为此时${MY_LIST}是一个列表,我们用"${MY_LIST}"这种形式的时候,表示要让 CMake 把这个数组的所有元素当成一个整体,而不是分散的个体。于是,为了保持数组的含义,又提供一个整体的表达方式, CMake 就会用分号“;”把这数组的多个元素连接起来。
而如果不加双引号时,CMake 不会数组当成一个整体看待,而是会将数组中的各个元素提取出进行打印输出。
条件判断
在 cmake 中可以使用条件判断,条件判断形式如下:
if(expression)