news 2026/7/5 20:39:53

CMake变量赋值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CMake变量赋值

CMake变量赋值

    • set / unset
    • **变量的区别**
      • 1、普通变量
      • 2、CACHE变量
      • 3、ENV变量
      • 4、父作用域

set / unset

命令语法说明
setset(<变量> <值> [CACHE <类型> <描述>] [FORCE])设置变量
unsetunset(<变量> [CACHE])删除变量

变量的区别

特性普通变量Cache 变量ENV 变量
作用域当前目录/函数全局(项目)CMake进程
持久化❌ 否✅ 是(CMakeCache.txt)❌ 否
系统可见❌ 否❌ 否⚠️ 子进程可见
生命周期单次运行跨运行保持CMake进程期间
修改语法set(VAR ...)set(VAR ... CACHE ...)set(ENV{VAR} ...)
读取语法${VAR}${VAR}$ENV{VAR}

1、普通变量

set(<name> <value>)
unset(<name>)

# ── 普通变量 ──────────────────────────────────set(USER_NAME"张三")message(STATUS"名字:${USER_NAME}")unset(USER_NAME)message(STATUS"删除后名字:${USER_NAME}")# ── 列表变量 ──────────────────────────────────set(SRC_FILES main.cpp utils.cpp config.cpp)message(STATUS"源文件:${SRC_FILES}")unset(SRC_FILES)message(STATUS"删除后源文件:${SRC_FILES}")

2、CACHE变量

CACHE 类型使用说明

1、命令行传参覆盖:-D{name}={value}
2、FORCE强制覆盖

类型说明示例
STRING字符串set(NAME "abc" CACHE STRING "名称")
BOOL布尔值 ON/OFFset(ENABLE_TEST ON CACHE BOOL "启用测试")
PATH目录路径set(DATA_DIR "/data" CACHE PATH "数据目录")
FILEPATH文件路径set(CFG_FILE "/etc/app.conf" CACHE FILEPATH "配置文件")
INTERNAL内部变量,不在GUI显示set(VERSION "1.0" CACHE INTERNAL "版本")
# ── CACHE 变量(可被 -D 命令行覆盖)──────────# CACHE, STRING变量set(MY_PORT8080CACHE STRING"CACHE变量STRING类型")# cmake -DMY_PORT=9090 .. 可覆盖message(STATUS"MY_PORT:${MY_PORT}")# CACHE, BOOL变量set(USE_USER_LIBS ON CACHE BOOL"CACHE变量BOOL类型")message(STATUS"USE_USER_LIBS:${USE_USER_LIBS}")unset(USE_USER_LIBS CACHE)# CACHE, PATH变量set(USE_USER_DIR"/usr/local"CACHEPATH"CACHE变量PATH类型")message(STATUS"USE_USER_DIR:${USE_USER_DIR}")unset(USE_USER_DIR CACHE)# CACHE, FILEPATH变量set(USE_USER_CFG_FILE"/usr/local/123.cfg"CACHE FILEPATH"CACHE变量FILEPATH类型")message(STATUS"USE_USER_CFG_FILE:${USE_USER_CFG_FILE}")unset(USE_USER_CFG_FILE CACHE)# CACHE, INTERNAL变量set(INTERNAL_VAR"hello-world"CACHE INTERNAL"CACHE变量INTERNAL类型")message(STATUS"INTERNAL_VAR:${INTERNAL_VAR}")unset(INTERNAL_VAR CACHE)# ── FORCE 强制覆盖 CACHE 变量 ─────────────────set(MY_PORT7070CACHE STRING"服务端口号"FORCE)message(STATUS"强制覆盖MY_PORT:${MY_PORT}")unset(MY_PORT CACHE)

3、ENV变量

set(ENV{MY_ENV}"hello")message(STATUS"环境变量:$ENV{MY_ENV}")unset(ENV{MY_ENV})message("取消后变量MY_ENV:$ENV{MY_ENV}")# 追加到环境变量set(ENV{PATH}"$ENV{PATH}:/new/path")# 常见环境变量message(STATUS"PATH:$ENV{PATH}")message(STATUS"USERPROFILE:$ENV{USERPROFILE}")message(STATUS"TEMP:$ENV{TEMP}")message(STATUS"JAVA_HOME:$ENV{JAVA_HOME}")message(STATUS"CMAKE_HOME:$ENV{CMAKE_HOME}")message(STATUS"USER_HOME:$ENV{USER_HOME}")

4、父作用域

set(PARENT_VAR"父级变量")function(my_func)# 函数内部的局部变量set(LOCAL_VAR"函数内局部变量")message("函数内: LOCAL_VAR =${LOCAL_VAR}")message("函数内: PARENT_VAR =${PARENT_VAR}")# 修改父作用域的变量set(PARENT_VAR"父级变量-函数内修改后"PARENT_SCOPE)# 在父作用域创建新变量set(NEW_VAR"函数内创建父级变量"PARENT_SCOPE)endfunction()# 调用函数my_func()message("函数外: PARENT_VAR =${PARENT_VAR}")message("函数外: LOCAL_VAR =${LOCAL_VAR}")message("函数外: NEW_VAR =${NEW_VAR}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 3:31:52

基于DeepSeek的AI作文批改系统

一、项目背景在教育信息化浪潮下&#xff0c;语文教师面临作文批改工作量大、反馈不及时的痛点。大语言模型的兴起为自动化作文批改提供了新的可能。本项目基于硅基流动平台的DeepSeek-R1模型&#xff0c;构建了一个集智能批改、对比分析、语音输入、报告导出于一体的全栈AI作文…

作者头像 李华
网站建设 2026/6/27 3:30:30

公共子序列(动态规划)

给定两个字符串A和B&#xff0c;长度分别为m和n&#xff0c;要求找出它们最长的公共子序列&#xff0c;并返回其长度。例如&#xff1a; A “HelloWorld” B “loop” 则A与B的最长公共子序列为 “loo”,返回的长度为3。import java.util.*;public class Que31 {public stati…

作者头像 李华
网站建设 2026/6/27 3:24:55

Agent Harness:2026 年 AI 工程最重要的概念,一篇文章讲透

"模型智力已经在线&#xff0c;我们现在比拼的就是 Harness。" —— 黄佳&#xff0c;《动手做 AI Agent》作者 2026 年上半年&#xff0c;AI Agent 领域冒出了一个绕不开的高频词&#xff1a;Harness。 Anthropic 连发两篇工程博客讲它&#xff0c;OpenAI 专门撰文讨…

作者头像 李华
网站建设 2026/6/27 3:22:40

AI 写小说能力深度评测与实战指南

在尝试用 AI 辅助创作长篇小说时&#xff0c;很多作者都遇到过类似的困境&#xff1a;开头几章惊艳无比&#xff0c;人物鲜活、情节紧凑&#xff0c;但写到第十章之后&#xff0c;角色性格突然“崩坏”&#xff0c;对话变得机械生硬&#xff0c;甚至前后剧情出现无法自圆其说的…

作者头像 李华
网站建设 2026/6/27 3:19:54

这9款开发工具夯爆了,用了都说好

在软件开发过程中&#xff0c;寻找能够提升效率、降低维护成本的工具是每个开发者的必修课。随着 AI 技术的爆发&#xff0c;开发环境的复杂度也在不断提升。以下整理了 9 款在各自领域表现出色的开源工具&#xff0c;涵盖了环境搭建、后端框架、自动化部署以及网络安全等多个维…

作者头像 李华
网站建设 2026/6/27 3:09:00

AI漫剧剪辑生成主流AI创作工具与工作流盘点

开篇 很多AI漫剧创作者常会遇到两类典型难题&#xff1a;单人创作时&#xff0c;脚本拆解、分镜绘制、画面生图、视频动态化、后期剪辑各环节工具割裂&#xff0c;素材、参数、文案无法连贯复用&#xff0c;反复切换平台浪费大量时间&#xff1b;小型漫剧工作室团队协作时&…

作者头像 李华