94、【OS】【Nuttx】【构建】cmake 配置介绍
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
接之前 blog
【OS】【Nuttx】【构建】用 cmake 构建工程
【OS】【Nuttx】【构建】cmake 支持构建的目标
【OS】【Nuttx】【构建】cmake menuconfig 目标
有了前面的基础,现在来看下官方文档对 cmake 构建这里是怎么描述的
CMake 配置介绍
CMake 配置构建整体方法在 Nuttx 文档有介绍,下面来分析下
CMake 初始化配置
首先这里第一个点,使用 CMake 初始化配置,就有比较多的细节
下面说下这里面的关键点:
-
使用 CMake 进行初始化配置,第一步是要基于某个硬件单板来初始化 Nuttx 的配置,而这个配置是用已有的预设配置来生成的,在 boards 目录下,可以看到各种类型板的预设配置 defconfig,比如 stm32f429i-disco:nsh
-
这里 configure.sh -L 命令,可以列出所有 Nuttx 支持的开发板及其配置,这个之前 blog 【OS】【Nuttx】【构建】配置 stm32 工程 已经分析过了
-
configure.sh 后面的 | less 表示将输出结果分页显示,方便查看,| 在 Linux 中叫管道,作用是把前一个命令的输出,当作后一个命令的输入,这里是把前面列出 Nuttx 支持的开发板及配置信息,传递给下一个命令 less
-
less 是 Linux 中的一个分页查看命令,作用是将前面命令的输出结果一屏一屏地显示出来,这里 less 命令接收前面传来的开发板及其配置信息文本,一页一页地显示在终端上
-
如果不加上 less 命令,configure.sh -L 会输出几百行的配置信息,终端会一下滚屏到底,让人根本看不清内容,加上 less 后,可以用滚轮查看,按 q 可以退出浏览模式,也不会在 bash 终端刷屏,很实用
-
当然也可以下面这种组合使用来快速查找,前提是知道开发板或配置信息的关键字
./tools/configure.sh -L | grep nsh
指定配置项目
下面来看第二个点
这里面也有几个关键点值得注意下:
- 一般每个开发板都有一个叫 nsh 的预配置文件,nsh 是 NuttShell 的缩写,相当于 Nuttx 的命令行界面,可类比 Linux 的 shell 终端
- 选择 nsh 是个很好的起点,因为系统启动后会进入一个交互式命令行,方便测试和调试系统,之前 blog 【OS】【Nuttx】【构建】配置 stm32 工程 里面选择的就是 stm32f429i-disco:nsh 配置
- -B build:创建一个名字叫做 build 的目录,用来存放编译过程中产生的所有文件,即构建目录,cmake 构建一般都要指定构建目录,不然会污染项目根目录
- -DBOARD_CONFIG:指定构建要使用哪个开发板的哪个预配置文件
- -GNinja:指定使用 Ninja 作为构建工具(替代传统的 make),Ninja一般更快更高效,这里可以先用 make 进行构建,不一定要用 Ninja
配置工程
下面第三点就是配置工程的关键
- 选择预配置文件,配置完基本选项后,cmake 还支持进一步配置自定义工程
- -t menuconfig:执行名为 menuconfig 的目标(之前 blog 【OS】【Nuttx】【构建】cmake menuconfig 目标 一直在铺垫的),启动一个文本菜单界面,和 make menuconfig 效果一样,这里 -t 和 --target 是一个意思,用来指定执行目标
- cmake --build build:对 build 目录进行构建操作,如果没指定目标,就会执行默认的目标:编译构建配置好的项目工程,不过现在指定了构建目标为 menuconfig,就不会启动编译构建
ok,今天先到这儿,下篇 blog 继续