一. 简介
 前面通过几个简单地示例向大家演示了 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  的内置变量,每一个内置变量都有自己的含义,像这样的内置变量还有很多,稍后向大家介绍。