怎么网站推广,网站建设了解一下图片,深圳微信商城网站设计公司,cocos游戏开发背景
之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建#xff0c;准备切换 cmake 进行构建#xff0c;方便后续扩展开发
Nuttx cmake 适配
nuttx项目路径下输入 make distclean#xff0c;清除之前工程配置
adminpcadminpc:~/nuttx_pdt/nuttx$ make …背景
之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建准备切换 cmake 进行构建方便后续扩展开发
Nuttx cmake 适配
nuttx项目路径下输入 make distclean清除之前工程配置
adminpcadminpc:~/nuttx_pdt/nuttx$ make distclean接着输入 cmake 构建命令发现没找到 python3-kconfiglib 该库用于解析和操作 Linux 内核配置系统Kconfig可以让用户通过 python 实现和 Kconfig 文件的交互
adminpcadminpc:~/nuttx_pdt/nuttx$ cmake -S . -B build -DBOARD_CONFIGsim:myapp
CMake Error at CMakeLists.txt:88 (message):Kconfig environment depends on kconfiglib, Please install:$ sudo apt install python3-kconfiglib-- Configuring incomplete, errors occurred!安装发现已经安装过但还是显示找不到该库
adminpcadminpc:~/nuttx_pdt/nuttx$ sudo apt install python3-kconfiglib
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-kconfiglib is already the newest version (14.1.0-3).
0 upgraded, 0 newly installed, 0 to remove and 258 not upgraded.查看报错原因发现和 olddefconfig 脚本找不到有关 输入命令 dpkg -L python3-kconfiglib查看 kconfiglib 库的位置可以找到该脚本
adminpcadminpc:~/nuttx_pdt/nuttx$ dpkg -L python3-kconfiglib查看该文件权限发现没有可执行权限很明显这个 olddefconfig.py 就是个库文件不是用来做可执行文件的所以得在外面做一层封装 查看 nuttx_kconfig.cmake 脚本可发现把 olddefconfig 和 setconfig 作为了可执行脚本进行使用
将这俩 py 文件封装成可执行的 shell 脚本在 bash 中输入如下命令将在 /usr/local/bin 目录下生成两个可执行脚本这俩可执行脚本指向 kconfiglib 库
sudo tee /usr/local/bin/olddefconfig /dev/null EOL
#!/bin/sh
exec python3 /usr/lib/python3/dist-packages/olddefconfig.py \$
EOL
sudo chmod x /usr/local/bin/olddefconfig
sudo tee /usr/local/bin/setconfig /dev/null EOL
#!/bin/sh
exec python3 /usr/lib/python3/dist-packages/setconfig.py \$
EOL
sudo chmod x /usr/local/bin/setconfig另外为了防止 find_program 找不到该可执行文件可直接指定路径
find_program(KCONFIGLIB /usr/local/bin/olddefconfig)Nuttx app cmake 适配
这里基于之前wiki已经配置好的工程不熟悉的可参考 15、【OS】【Nuttx】OS裁剪运行指定程序周期打印当前任务
在 nuttx-app 路径下添加 myapp 路径 myapp路径下新建CMakeLists.txt文件输入内容并修改 Kconfig添加 cmake 配置
// CMakeLists.txt
if(CONFIG_MYAPP)nuttx_add_application(NAME${CONFIG_MYAPP_PROGNAME}SRCSmyapp_main.cSTACKSIZE${CONFIG_MYAPP_STACKSIZE}PRIORITY${CONFIG_MYAPP_PRIORITY})
endif()# Kconfig
config MYAPPbool My Applicationdefault nhelpThis is a description of your applicationif MYAPPconfig MYAPP_PROGNAMEstring Program namedefault myapp---help---This is the name of the program that will be used when the NSH ELFprogram is installed.config MYAPP_PRIORITYint myapp task prioritydefault 100config MYAPP_STACKSIZEint myapp stack sizedefault DEFAULT_TASK_STACKSIZEendif执行 cmake 构建
配置 cmake 工程
adminpcadminpc:~/nuttx_pdt/nuttx$ cmake -S . -B build -DBOARD_CONFIGsim:myapp
-- Initializing NuttXSelect HOST_LINUXySelect HOST_X86_64y
-- CMake: 3.28.3
-- Board: sim
-- Config: myapp
-- Appdir: /home/adminpc/nuttx_pdt/nuttx-apps
-- The C compiler identification is GNU 13.3.0
-- The CXX compiler identification is GNU 13.3.0
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/cc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (2.2s)
-- Generating done (0.3s)
-- Build files have been written to: /home/adminpc/nuttx_pdt/nuttx/build执行cmake构建
cmake --build build/构建成功 build目录下出现熟悉的身影 可以正常执行