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

NCS添加.c.h文件

【NCS随笔】

NCS 构建

Zephyr 使用CMake作为构建系统,CMake 是一个跨平台的构建工具,它通过读取CMakeLists.txt文件来生成平台特定的构建文件,
Zephyr 的构建系统基于GNUMakeCMake,但 CMake 是主要的配置入口。每个 Zephyr 项目(应用程序、驱动或模块)都需要一个或多个CMakeLists.txt文件来定义构建规则
我们可以打开一个例程参考,我这里使用ncs3.0.0的peripheral_uart例程
image

  • cmake_minimum_required:指定所需的最低 CMake 版本。
  • find_package(Zephyr):查找并加载 Zephyr 的 CMake 工具链和模块
  • project:定义项目名称,通常与应用程序名称一致
  • target_sources:指定项目的源文件路径(如.c.cpp文件)

我们选择一个更加复杂的例程来分析v3.0.0\nrf\applications\nrf_desktop
image

  • cmake_minimum_required:要求 CMake 版本至少为 3.20.0

  • APPLICATION_CONFIG_DIR:设置应用配置文件目录,根据目标开发板动态调整(如configuration/nrf52840dk_nrf52840

  • find_package(Zephyr):查找并加载 Zephyr 构建系统

  • project:定义项目名称为 "nRF Desktop",版本为 0.1

  • assert:确保在 Kconfig 中定义了CONFIG_DESKTOP_HID_REPORT_DESC(HID 报告描述符文件路径)

  • target_sources:添加主源文件src/main.c和 HID 描述符文件到构建

  • zephyr_library_include_directories:为应用库添加头文件路径(供内部模块使用)

  • zephyr_include_directories:为整个项目添加头文件路径(全局可见)

  • add_subdirectory:递归添加子目录中的代码模块,每个子目录需包含自己的 CMakeLists.txt

  • CONFIG_IMG_MANAGER:如果启用固件管理功能,链接 MCUboot 的引导工具库

  • CONFIG_DESKTOP_CONFIG_CHANNEL_ENABLE:如果启用配置通道功能,添加自定义链接脚本nrf_desktop.ld

总结

上面的功能可能有点多,需要长期使用才知道大部分的功能,实际我们添加.c.h甚至.a&.lib文件只需要需要下面的指令就行了,添加在Cmakelists.txt

  • 添加.c文件: target_sources:target_sources(app PRIVATE xxx.c )
  • 添加.h文件路径:target_include_directories(app PRIVATE common)
  • 添加.a或者.lib文件:target_link_libraries(app PRIVATE xxx.lib)

测试

使用periphreal_uart例程
1、在src目录添加test文件夹,在test文件下创建CMakeList.txt文件,将这个文件下面的test.c和test.h包含进去
2、在periphreal_uart例程根目录下把test这个文件夹使用add_subdirectory(src/test)包含进去,这样就可以了
image

image

image

image

image

你的点赞、收藏和评论是对我最大的支持,有问题多多指教,如果有需要Nordic开发板、Nordic的芯片以及Nordic技术支持的可以在个人资料获取我的联系方式,感谢读者支持!

文章转载自:

http://www.tdrn.cn/news/6341/
http://www.tdrn.cn/news/6339/
http://www.tdrn.cn/news/6338/
http://www.kefakeji.com/news/687.html

相关文章:

  • 明月直入,无心可猜
  • realtek网卡r8168如何强制设置1000M
  • mobaXterm免费版保存密码查询
  • 公司类型英文缩写
  • CVE-2020-17526 Apache Airflow 身份验证绕过漏洞 (复现)
  • Pwn2Own柏林2025次日战报:单日狂揽43.5万美元奖金,20个零日漏洞曝光
  • Day27
  • 猫树
  • 大道至简读后感
  • 一些感覺比較好的題目
  • 7.17XYD模拟赛
  • 如何把整套网站的源代码弄下来.250408
  • 牛客 周赛101 20250726
  • 人生的意义,就是没有意义.250421
  • 牛客2025多校 R3
  • 数论基础H
  • 推理大模型 vs 普通大模型:核心差异与国产代表产品
  • 【动态规划】树上连通块计数
  • Windows自带神器Robocopy一键备份文件文件夹,断点续传+多线程效率翻倍!.250429
  • 7月27日
  • 第八周作业
  • ASP.NET Core MVC 文件上传、文件扩展验证注解实现、文件扩展验证
  • 政治学和行政学属于法学
  • 基于RK3399嵌入式Linux驱动开发课程
  • Java日志框架
  • ASP.NET Core MVC 使用 EF Core 实现字段自动填充(如:添加时间 CreatedTime、更新时间 UpdatedTime)
  • 山西大同旅游攻略
  • 7月27日总结
  • 线性回归算法
  • 什么?智能体生成智能体?自我进化? - 戴维