CMake同样可以使用变量,比如当依赖文件过多或需要生成的项目繁杂,就可以使用变量统一管理,也便于以后的条件编译。
一、定义变量
CMake 定义变量分显式和隐式两种。
显式定义即使用 set 等语句,可以自定义变量名称。
隐式定义是在使用其他语句时自动创建的变量,如 project 是定义项目名称的,但在定义名称的同时,<projectname>_BINARY_DIR 和 <projectname>_SOURCE_DIR 两个变量就被隐式定义了。
例如:
只执行下面语句
project(test_4)
test_4_BINARY_DIR 和 test_4_SOURCE_DIR 两个变量就被隐式定义了。
set语句语法
set(<variable> <value>...)
如:
set(USER_KEY "Hello World")
可以为一个变量赋多值:
set(USER_KEY
"Hello World"
"Hello CMake"
)
二、引用变量
使用 ${variable} 进行变量的引用。在 if 等语句中,直接使用变量名而不通过 ${variable} 取值。
例如 CMake学习(一)中CMakeLists.txt内容:
# CMakeLists.txt
# CMake最低版本要求
cmake_minimum_required(VERSION 3.5)
# 项目名称
project(test_1)
# 生成可执行文件,test_1是可执行文件的名字,hello.c是源文件名称,如有其他源文件,可在后面添加
add_executable(test_1 hello.c)
可以修改为:
# CMakeLists.txt
# CMake最低版本要求
cmake_minimum_required(VERSION 3.5)
# 项目名称
project(test_1)
set(SOURCE hello.c)
# 生成可执行文件,test_1是可执行文件的名字,hello.c是源文件名称,如有其他源文件,可在后面添加
add_executable(test_1 ${SOURCE})
参考:
https://www.cnblogs.com/linuxAndMcu/p/10670591.html
https://cmake.org/cmake/help/v3.14/command/set.html
https://blog.csdn.net/LaineGates/article/details/89847726