news 2026/10/23 5:30:39

CMakePresets.json与cmake区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CMakePresets.json与cmake区别

CMakePresets.json 是干什么的?

一句话:CMakePresets.json是用来预先定义一组“配置/编译方案”的标准配置文件,方便你在命令行或 IDE 里一键选择,而不用每次自己拼-G -DCMAKE_TOOLCHAIN_FILE=... -DCMAKE_BUILD_TYPE=...这些参数。

  • 典型功能:
    • 统一定义多个构建配置(如Debug/Release/arm-gcc-debug等)。
    • 指定构建目录(build/Debug、build/Release等)。
    • 指定工具链文件(比如你项目里的tools/cmake_toolchain_files/armgcc.cmake)。
    • 传各种-DXXX=ON/OFF选项。

它和.cmake文件的本质区别

  • CMakePresets.json:

    • 是一个“如何调用 cmake 的配置清单”。
    • 作用范围:外部(调用 cmake 时,决定用什么生成器、什么工具链、放到哪个 build 目录、开哪些选项)。
    • 用法:cmake --preset <名字>、IDE 里的 “Configure Preset / Build Preset” 下拉菜单。
  • xxx.cmake(模块/工具链等):

    • 是cmake 语言写的脚本,在CMake 运行过程中被include()/toolchain使用。
    • 比如:
      • tools/cmake_toolchain_files/armgcc.cmake:定义交叉编译器路径、cpu 选项等 → 典型工具链文件。
      • flags.cmake、某些SDK/.../*.cmake:设置编译选项、添加库、宏等 → 典型模块/配置脚本。
    • 用法:
      • 在命令行:-DCMAKE_TOOLCHAIN_FILE=tools/cmake_toolchain_files/armgcc.cmake
      • 或在CMakeLists.txt里:include(flags.cmake)等。

对比总结:

  • Presets(json):告诉 cmake“怎么启动、用哪个工具链、放哪编”。
  • .cmake 脚本:在 cmake 运行时,告诉 cmake“怎么配置项目自身:用哪些编译选项、哪些库、交叉编译器在哪”。

在你的工程里,大概怎么用 Presets

结合你的项目结构(已存在CMakePresets.json、tools/cmake_toolchain_files/armgcc.cmake):

  • 在命令行构建:
# 查看有哪些 presetcmake --list-presets# 用某个配置 preset(例如叫 "armgcc-debug")生成 build 目录cmake --preset armgcc-debug# 用某个 build preset 编译cmake --build --preset armgcc-debug
  • 在 VS Code / CLion / VS:
    • 打开工程根目录(有CMakePresets.json那层)。
    • IDE 会自动识别 presets,弹出配置选项,你直接选Debug/Release/armgcc-debug。
    • 之后直接点Configure / Build就会按 preset 里定义的参数运行。

什么时候改 Presets?什么时候改 .cmake?

  • 改CMakePresets.json:

    • 想新增一种编译方案:比如同一个源码,既要为 Windows x64 编,又要为 i.MX8 ARM 编。
    • 想换构建目录命名、默认构建类型、默认工具链等。
  • 改.cmake(如armgcc.cmake、flags.cmake):

    • 想改交叉编译器路径、CPU 选项、FPU 选项。
    • 想统一调整-O2/-O0/-g、警告等级、宏定义、链接脚本等。

如果你愿意,可以把当前的CMakePresets.json内容贴出来,我可以逐项解释每个字段具体对你这个 i.MX8 + AD7606 工程的含义。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 4:07:01

基于GUI-PLUS 搭配 Java Robot 实现智能桌面操控

目录 一、引言 二、代码实现 1. 新增工具类 CoordinateExtractUtil 1.1 核心方法说明 2. DesktopRobotUtil 修改 2.1 功能概述 2.2 核心方法解析 鼠标操作 键盘操作 滚轮操作 注意事项 3. OperationController 接口 三、结果演示 一、引言 在前文 基于GUI-PLUS 的桌…

作者头像 李华
网站建设 2026/10/22 11:15:21

Langchain-Chatchat实现多租户知识隔离的技术方案

Langchain-Chatchat 实现多租户知识隔离的技术方案 在企业智能化转型加速的今天&#xff0c;越来越多组织开始构建基于大语言模型&#xff08;LLM&#xff09;的本地知识库系统。然而&#xff0c;一个现实难题摆在面前&#xff1a;如何让多个部门、子公司甚至外部客户共享同一套…

作者头像 李华
网站建设 2026/10/22 15:59:58

震撼发现!GPT-5记忆系统不用RAG?四大层级架构详解(建议收藏)

本文通过逆向工程揭秘GPT-5记忆系统架构&#xff0c;发现其摒弃了传统向量数据库和RAG技术&#xff0c;转而采用四大层级&#xff1a;会话元数据、用户记忆、近期对话摘要和当前会话滑动窗口。这种分层设计既实现了个性化体验&#xff0c;又避免了高计算开销&#xff0c;在速度…

作者头像 李华
网站建设 2026/10/22 0:11:27

AI应用架构师主动学习实践:解决实际难题

AI应用架构师主动学习实践&#xff1a;解决实际难题 关键词&#xff1a;AI应用架构师、主动学习、实际难题、数据处理、模型优化、应用部署 摘要&#xff1a;本文深入探讨AI应用架构师在主动学习方面的实践&#xff0c;旨在解决实际工作中面临的各类难题。通过阐述主动学习的概…

作者头像 李华
网站建设 2026/10/22 8:44:58

Pandas库基础概念和基础操作

Pandas 是 Python 中用于数据分析和处理最流行的开源库之一&#xff0c;建立在 NumPy 之上&#xff0c;提供了高性能、易用的数据结构和数据分析工具。它特别适合处理结构化数据&#xff08;如表格型或异质型数据&#xff09;。以下是 Pandas 的基础概念详细介绍&#xff1a;一…

作者头像 李华