计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数指针
c++ 基础 基础语法
c++ 多线程
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt 开发环境
qt c++
理解QObject 1
理解QObject 4
qt index
qt qml quick
qt ui
qt 多线程
数据结构 数组
PC问题监控及排查
PC程序性能优化
OS
TOOL
C++ STL
编程漫谈
C++实战-生产者 消费者流水线
C++实战 IO
本站点使用 MrDoc 构建
-
+
变量
## 语法 ``` //设置变量 set(VARIABLE_NAME "value") ``` ``` //使用变量 ${VARIABLE_NAME} ``` ``` //变量可包含其他变量 set(NAME "ANC") set(FULL_GREET "NAC") set(ALL "${NAME}, ${FULL_GREET}") ``` ## 变量类型 - 普通变量 - 作用域限定在当前cmakelists.txt或函数内 - 子目录会继承父目录的变量 - 修改不会影响父作用域 - 缓存变量 - 缓存变量存储在cmakecache.txt中,多次cmake运行之间保持不变 - 环境变量 - 访问和设置系统环境变量(仅在cmake进程中有效) ## 变量作用域 ##### 目录作用域 ``` project/ ├── CMakeLists.txt # 父作用域 └── subdir/ └── CMakeLists.txt # 子作用域 ``` 父 CMakeLists.txt: ```cmake set(PARENT_VAR "I'm from parent") add_subdirectory(subdir) message("CHILD_VAR = ${CHILD_VAR}") # 空值!子变量不会传播 到父 ``` subdir/CMakeLists.txt: ```cmake message("PARENT_VAR = ${PARENT_VAR}") # 可以访问父变量 set(CHILD_VAR "I'm from child") ``` ##### 函数作用域 ```cmake function(my_function) set(LOCAL_VAR "local") message("Inside function: ${LOCAL_VAR}") endfunction() my_function() message("Outside function: ${LOCAL_VAR}") # 空值! ``` ##### PARENT_SCOPE ``` function(set_parent_var) set(MY_VAR "modified" PARENT_SCOPE) endfunction() set(MY_VAR "original") message("Before: ${MY_VAR}") # 输出: original set_parent_var() message("After: ${MY_VAR}") # 输出: modified ``` ## 列表变量 ##### 语法 ```cmake # 方法 1: 使用分号 set(MY_LIST "item1;item2;item3") # 方法 2: 使用多个参数 set(MY_LIST item1 item2 item3) # 方法 3: 使用 list() 命令 list(APPEND MY_LIST item4 item5) ``` ##### 列表操作 ```cmake set(FRUITS apple banana cherry) # 获取列表长度 list(LENGTH FRUITS FRUITS_COUNT) message("Count: ${FRUITS_COUNT}") # 输出: 3 # 获取元素 list(GET FRUITS 0 FIRST_FRUIT) message("First: ${FIRST_FRUIT}") # 输出: apple # 追加元素 list(APPEND FRUITS orange) # 移除元素 list(REMOVE_ITEM FRUITS banana) # 查找元素 list(FIND FRUITS cherry INDEX) message("Cherry index: ${INDEX}") # 输出: 1 # 排序 list(SORT FRUITS) # 反转 list(REVERSE FRUITS) ``` ## 常用预定义变量 ```cmake PROJECT_NAME # 项目名称 PROJECT_VERSION # 项目版本 PROJECT_SOURCE_DIR # 项目源代码根目录 PROJECT_BINARY_DIR # 项目构建根目录 ``` ```cmake CMAKE_SOURCE_DIR # 顶层源代码目录 CMAKE_BINARY_DIR # 顶层构建目录 CMAKE_CURRENT_SOURCE_DIR # 当前处理的 CMakeLists.txt 所在目 录 CMAKE_CURRENT_BINARY_DIR # 当前处理的构建目录 ``` ```cmake CMAKE_SYSTEM_NAME # 操作系统名称(Linux, Windows, Darwin) CMAKE_SYSTEM_VERSION # 操作系统版本 CMAKE_HOST_SYSTEM_NAME # 构建主机的操作系统 ``` ```cmake CMAKE_CXX_COMPILER # C++ 编译器路径 CMAKE_CXX_COMPILER_ID # 编译器 ID(GNU, Clang, MSVC) CMAKE_CXX_COMPILER_VERSION # 编译器版本 ```
peipeo
2026年5月16日 09:33
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码