当前位置: 首页 > news >正文

100、【OS】【Nuttx】【构建】cmake 配置保存

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

接之前 blog
【OS】【Nuttx】【构建】cmake 配置实操:问题解决
之前 blog 解决了 cmake 配置问题,在回到主线分析前,再讲一个点:配置保存

配置保存

板默认配置 defconfig 里注释
在这里插入图片描述
有两个点:

  • make menuconfig:修改当前的 .config 配置文件,.config 是一个保存内核或系统编译配置的文件,里面记录了哪些功能开启,哪些关闭,在编译构建时,将读取这个配置文件
  • make savedefconfig:生成一个新的 defconfig 文件,defconfig 一般是一个最小化的配置文件,只记录与默认配置不同的选项,便于管理和版本控制,savedefconfig 会把当前 .config 中的重新输出成一个标准的 defconfig 文件,下次就可以用这个新的 defconfig 来恢复自定义配置,比如在重新编译或分享给他人时使用,便于保存定制配置,方便复用移植

可以这么理解,.config 实时作用于编译构建,而 defconfig 是持久化的配置快照,defconfig 本身不直接参与编译,但能生成或恢复 .config,从而间接作用于编译构建

make 配置保存

现在先重新演示一遍,make 配置的过程,首先在 nuttx 根目录,bash 终端输入

make distclean

先清除之前配置,而后在终端输入

tools/configure.sh -l -e stm32f429i-disco:nsh

选择具体板类型,基于其默认配置 defconfig 进行构建工程搭建
在这里插入图片描述

可以看到,此时编译系统用默认配置 defconfig 生成出了 .config 文件,查看 .config 文件,默认配置这里栈溢出选项 CONFIG_ARMV7M_STACKCHECK 此时是关闭的(因为其默认配置 defconfig 里没有)
在这里插入图片描述
终端输入

make menuconfig

配置将其打开,此时左上角表示配置将作用到根目录下的 .config 文件
在这里插入图片描述
退出保存
在这里插入图片描述
可以看到 .config 文件已包含了栈溢出选项 CONFIG_ARMV7M_STACKCHECK
在这里插入图片描述
终端输入

make clean; make

进行编译构建,可以看到此时 map 文件里能找到栈溢出的相关功能,比如 __stack_overflow_trap
在这里插入图片描述
ok,如果此时想下次重新走这个流程,默认配置本身就带上栈溢出等定制化配置的话,可以在终端输入

make savedefconfig

此时根目录下会重新生成 defconfig(带上了定制化配置)
在这里插入图片描述
将新生成的 defconfig 替换掉原来工程目录下的 defconfig,下次重新走这个流程时,就能默认带上用户的定制化配置
在这里插入图片描述

cmake 配置保存

上面讲完 make 的配置保存,下面再讲下 cmake 如何保存配置,同之前 blog 【OS】【Nuttx】【构建】cmake menuconfig 目标 一样,之前有 menuconfig 目标,当然也就有 savedefconfig 目标

在这里插入图片描述
但是也有点小瑕疵,就是箭头上指出的 savedefconfig 命令,和之前 menuconfig 一样,这个在 Linux 里面是没有的,所以和之前 blog 【OS】【Nuttx】【构建】cmake 配置实操:问题解决 一样,可以参考 make 的写法
在这里插入图片描述
继续找到关键字 KCONFIG_SAVEDEFCONFIG
在这里插入图片描述
ok,将 cmake 里面 savedefconfig 自定义目标这里替换掉
在这里插入图片描述
这里直接提供源码

# utility target to replace defconfig to board's defconfig
add_custom_target(savedefconfigCOMMAND ${CMAKE_COMMAND} -E env ${KCONFIG_ENV} kconfig-conf Kconfig --savedefconfig --out${CMAKE_BINARY_DIR}/defconfig.tmpCOMMAND ${CMAKE_COMMAND} -P ${NUTTX_DIR}/cmake/savedefconfig.cmake${CMAKE_BINARY_DIR}/.config ${CMAKE_BINARY_DIR}/defconfig.tmpCOMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/defconfig${NUTTX_DEFCONFIG}WORKING_DIRECTORY ${NUTTX_DIR})

cmake 工程经过配置后,配置流程参考之前 blog 【OS】【Nuttx】【构建】cmake 配置实操,在终端输入

cmake --build build -t savedefconfig

即可用 cmake 保存 defconfig 配置
在这里插入图片描述
ok,本期讲到这里,下篇 blog 继续

http://www.lryc.cn/news/619796.html

相关文章:

  • 2025年跨网文件摆渡系统分析,跨网文件交换系统实现瞬间数据互通
  • Windows基础概略——第一阶段
  • 5种缓存策略解析
  • scikit-learn/sklearn学习|岭回归linear_model.Ridge()函数解读
  • 流处理 or 批处理?大数据架构还需要流批一体吗?
  • USB基础 -- USB2.0设备插入的过程
  • 6 .循环-for
  • MySQL 到 ClickHouse 明细分析链路改造:数据校验、补偿与延迟治理
  • 3.9开发前端常用的几个工具(nvm,json-server,nrm)
  • 力扣top100(day02-05)--二叉树 02
  • 职场与生活如何在手机中共存?(二)
  • AI驱动的政策博弈分析:特与鲍威尔的降息争议及市场响应
  • hadoop 前端yarn查看
  • 体制内程序员证书扫盲(中国内地)
  • 30 HTB Soccer 机器 - 容易
  • Qt中实现OpenGL应用的编程框架
  • 简易路径调试工具
  • C++ 面向对象四大特性:面试深度解析
  • 河南萌新联赛2025第五场 - 信息工程大学
  • 从内核数据结构的角度理解socket
  • 9 ABP Framework 中的 MVC 和 Razor Pages
  • SpringMVC 6+源码分析(六)参数处理
  • 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算实践过程
  • Datawhale AI夏令营第三期多模态RAG方向 Task3
  • 算法详细讲解 - 离散化/区间合并
  • 【慕伏白】Kali 系统下安装 docker
  • 弹性扩展新范式:分布式LLM计算的FastMCP解决方案
  • Python(二):MacBook安装 Python并运行第一个 Python 程序
  • 【QT】QT实现鼠标左右滑动切换图片
  • MySQL中的缓存机制