当前位置: 首页 > 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.dtcms.com/a/328674.html

相关文章:

  • Xsens惯性动作捕捉系统
  • 数据库事务隔离:详解及Java面试题
  • MyBatis-Plus 分页失效问题解析:@Param 注解的影响与解决方案
  • amis表单较验
  • Datawhale AI夏令营第三期多模态RAG方向 Task3
  • AAAI论文速递 | NEST:超图小世界网络让自动驾驶轨迹预测更精准
  • 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算实践过程
  • 从聚合到透视:SQL 窗口函数的系统解读
  • 谷歌、facebook、tiktok广告账户多开怎么安全?亚马逊、ebay、shopee多店铺怎么做好?看看adspower工具,注册免费试用及实用技巧分享
  • SQL详细语法教程(一)--数据定义语言(DDL)
  • 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算)实践
  • 4G模块 ML307A通过MQTT协议连接到阿里云
  • 数据科学与爬虫技术学习笔记
  • 基于机器学习的自动驾驶汽车新型失效运行方法
  • Win11和Mac设置环境变量
  • 【汽车标定数据】动态优先级线程池在异步多文件解析中的应用
  • 2022 年全国硕士研究生招生考试真题笔记
  • 深度学习赋能汽车制造缺陷检测
  • “我店模式”:零售转型中的场景化突围
  • 美团搜索推荐统一Agent之交互协议与多Agent协同
  • 【计算机网络 | 第6篇】计算机体系结构与参考模型
  • go学习笔记-匿名函数
  • 算法题笔记
  • Java连接MySQL数据库
  • Socket 套接字常用方法
  • Java多源AI接口融合框架:动态模型切换与智能路由实战
  • pybind11绑定C++项目心得
  • Sentinel 和 Hystrix
  • MySQL 存储过程终止执行的方法
  • 力扣热题100------279.完全平方数