project
project命令用于设置工程名称:
# 设置工程名称为 HELLO
project(HELLO)
执行这个之后会引入两个变量:HELLO_SOURCE_DIR 和 HELLO_BINARY_DIR,注意这两个变量名的前缀就是工程名称,HELLO_SOURCE_DIR 变量指的是 HELLO 工程源码目录、HELLO_BINARY_DIR 变量指的是 HELLO 工程源码的输出文件目录;我们可以使用 message 命令打印变量,譬如 CMakeLists.txt 内容如下所示:
# 顶层 CMakeLists.txt
cmake_minimum_required("VERSION" "3.5")
project("HELLO")
message(${HELLO_SOURCE_DIR})
message(${HELLO_BINARY_DIR})
进入 build 目录下,执行 cmake:
但如果不加入 project(HELLO)命令,这两个变量是不存在的;工程源码目录指的是顶层源码所在目录,cmake定义了两个等价的变量PROJECT_SOURCE_DIR 和 PROJECT_BINARY_DIR 通常在 CMakeLists.txt 源码中都会使用这两个等价的变量。
通常只需要在顶层 CMakeLists.txt 源码中调用 project 即可!
set
set 命令用于设置变量,命令定义如下所示:
set(<variable><value> ... [PARENT_SCOPE])
设置变量的值,可选参数 PARENT_SCOPE 影响变量的作用域。
譬如 CMakeLists.txt 源码内容如下所示:
# 顶层 CMakeLists.txt
cmake_minimum_required("VERSION" "3.5")
project("HELLO")
# set 命令
set(VAR1 Hello) #设置变量 VAR1=Hello
set(VAR2 World) #设置变量 VAR2=World
# 打印变量
message(${VAR1} " " ${VAR2})
对应的打印信息:
字符串列