一. 简介
前面通过几个简单地示例向大家演示了 cmake 的使用方法,由此可知,cmake 的使用方法其实还是非常简单的,重点在于编写 CMakeLists.txt,CMakeLists.txt 的语法规则也简单,并没有 Makefile 的语法规则那么复杂难以理解!
本小节我们来学习 CMakeLists.txt 的语法规则。
二. CMakeLists.txt 简单的语法介绍
1. 注释
在 CMakeLists.txt 文件中,使用“#”号进行单行注释,譬如:
#
# 这是注释信息
#
cmake_minimum_required(VERSION 3.5)
project(HELLO)
大多数脚本语言都是使用“#”号进行注释。
2. 命令(command)
通常在
CMakeLists.txt
文件中,使用最多的是命令,譬如上例中的
cmake_minimum_required
、
project
都是命令;命令的使用方式有点类似于
C
语言中的函数,因为命令后面需要提供一对括号,并且通常需要我
们提供参数,多个参数使用
空格
分隔而不是逗号 “
,
”,这是与函数不同的地方。
命令的语法格式如下所示:
command(参数 1 参数 2 参数 3 ...)
不同的命令所需的参数不同,需要注意的是,参数可以分为必要参数和可选参数(通常称为选项)。
很多命令都提供了这两类参数,必要参数使用<参数>表示,而可选参数使用[参数
]表示。
譬如
set
命令:
set(<variable> <value>... [PARENT_SCOPE])
set
命令用于设置变量,第一个参数
<variable>
和第二个参数
<value>
是必要参数,在参数列表(
…
表示参数个数没有限制)的最后可以添加一个可选参数
PARENT_SCOPE
(
PARENT_SCOPE
选项),既然是可选
的,那就不是必须的,根据实际使用情况确定是否需要添加。
在 CMakeLists.txt
中,命令名不区分大小写,可以使用大写字母或小写字母书写命令名,譬如:
project(HELLO) #小写
PROJECT(HELLO) #大写
这俩的效果是相同的,指定的是同一个命令,并没区别;这个主要看个人喜好,个人喜欢用小写字母,主要是为了和变量区分开来,因为
cmake
的内置变量其名称都是使用大写字母组成的。
3. 变量(variable)
在 CMakeLists.txt 文件中可以使用变量,使用 set 命令可以对变量进行设置,譬如:
# 设置变量 MY_VAL
set(MY_VAL "Hello World!")
上例中,通过
set
命令对变量
MY_VAL
进行设置,将其内容设置为
"Hello World!"
;
那如何引用这个变 量呢?
这与
Makefile
是相同的,通过
${MY_VAL}
方式来引用变量,如下所示:
#设置变量 MY_VAL
set(MY_VAL "Hello World!")
#引用变量 MY_VAL
message(${MY_VAL})
变量可以分为 cmake
内置变量以及自定义变量。
譬如,上例中所定义的
MY_VAL
就是一个自定义变量;
譬如,在
前面 cmake编译举例中所使用的
LIBRARY_OUTPUT_PATH
和
EXECUTABLE_OUTPUT_PATH
变量则是
cmake
的内置变量,每一个内置变量都有自己的含义,像这样的内置变量还有很多,稍后向大家介绍。