news 2026/4/1 20:11:02

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/Debugbuild/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.jsontools/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.cmakeflags.cmake

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

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

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

Langchain-Chatchat结合MinIO实现文档持久化存储

Langchain-Chatchat 结合 MinIO 实现文档持久化存储 在企业级 AI 应用日益普及的今天&#xff0c;越来越多组织开始构建基于大模型的本地知识库问答系统。然而一个现实问题始终困扰着开发者&#xff1a;当用户上传了上百份 PDF、Word 手册后&#xff0c;如何确保这些文档不会因…

作者头像 李华
网站建设 2026/3/29 11:56:54

Langchain-Chatchat如何处理模糊性问题的回答?

Langchain-Chatchat 如何应对模糊性问题&#xff1a;从语义理解到可控生成的实践路径 在企业级智能问答系统中&#xff0c;一个看似简单的问题往往暗藏玄机。比如用户问&#xff1a;“那个项目进展怎么样了&#xff1f;”——“那个”指的是哪个&#xff1f;是上周会议提到的新…

作者头像 李华
网站建设 2026/3/26 9:05:40

线下娱乐破局:透明化运营+双线引流

一、传统线下娱乐场所的普遍困局许多实体娱乐场所的经营者都面临相似的烦恼&#xff1a;客流量越来越不稳定&#xff0c;顾客消费频次明显下降。设备投入不断加大&#xff0c;但真正能持续产生收益的项目却寥寥无几。更棘手的是&#xff0c;收入来源过度依赖到店消费——天气不…

作者头像 李华
网站建设 2026/3/24 3:28:43

docker安装mongodb

一、前期准备 1.在服务器上面创建三个目录做为挂载到docker (/mongo/data,/mongo/logs,/mongo/conf ) 由于我们要把宿主的配置文件同步容器中&#xff0c;所以要在/mogo/conf创建mogodb的配置文件 mongod.conf ,内容如下&#xff1a; # 系统日志 systemLog:destination: fil…

作者头像 李华
网站建设 2026/3/24 14:40:37

我的网络安全实战学习笔记:记录从零到熟练的每个关键步骤与工具

01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

作者头像 李华
网站建设 2026/3/31 23:44:16

Langchain-Chatchat结合OCR技术处理扫描版PDF

Langchain-Chatchat 结合 OCR 技术处理扫描版 PDF 在企业知识管理日益智能化的今天&#xff0c;一个常见的难题浮出水面&#xff1a;大量历史文档以扫描图像的形式沉睡在档案库中。这些 PDF 文件看似清晰可读&#xff0c;实则对计算机而言是一片“黑盒”——没有文本层&#xf…

作者头像 李华