选中内容(绿色)时除了会搜索文章名,还会搜索文章内容
点击结果中的文章名进入文章界面后可以按Ctrl+F在页面内搜索
  • 版权:CC BY-SA 4.0
  • 创建:2020-05-02
  • 更新:2022-06-06
用 Cmake+Kconfig 组织的 C/C++ 模块化项目代码框架


用 Cmake+Kconfig 组织的 C/C++ 模块化项目代码框架, 主要是为了方便一个代码的构建,以及代码的模块化结构,并使用Kconfig来使工程可配置可选择性地裁剪模块

如果喜欢, 点一下 star 加入收藏~

欢迎提交pr和issue

源码

代码托管在 github/Neutree/c_cpp_project_framework

方案

结合 CMake + KConfig + Python 做一个使用起来简单的 C/C++ 源码项目框架:

  • 使用 Python 脚本作为入口,方便开发者执行一个命令比如 python project.py build就能执行编译;
  • 使用 Kconfig 实现功能模块可选方便增删功能模块;
  • 使用 CMake 作为基础编译工具,加上给组件提供简单好用的模板,开发者不需要学习 CMake 也能使用

特点:

  • 语法简单, 无需Makefile或者CMake知识, 只需基于模板修改变量的值即可非常简单地用起来了
  • 基于组件(component)概念的项目结构, 方便搭建层次结构清晰的项目架构
  • 组件之间调用只需要一个语句指定依赖即可(比如list(APPEND ADD_REQUIREMENTS component1)), 无需设置多余变量比如INCLUDE 路径即可在源码中调用依赖的组件的内容, 包括依赖系统安装的库
  • 使用 Kconfig 使项目组件和代码可裁剪配置, 方便项目满足不同的需求
  • 方便地引入静态库(.a) 和 动态库(.so) ( 比如list(APPEND ADD_STATIC_LIB “lib/libtest.a”))
  • 方便地生成静态库(.a) 和 动态库(.so) (默认生成静态库, 需要组件生成动态库,则使用register_component(DYNAMIC)注册模块即可)
  • 使用 Python 脚本作为辅助, 可方便地添加命令和工具, 编译只需要执行简单的命令即可(如python project.py build python project.py menuconfig)
  • 方便地作为 SDK, 工程实例可以直接放在SDK目录下, 也可以单独放在磁盘任何地方, 只需要设置环境变量MY_SDK_PATH即可
  • 交叉编译友好, 很好地作为嵌入式设备 SDK
  • 提供简单的编译脚本和命令
  • 支持编译成 WASM(Web Assembly)(在网页端运行,或在其平台运行,或者被其它语言调用)

效果图: (这是演示了如何通过界面配置工程模块,并且使用简单的命令构建生成固件)

build

文章有误?有想法想讨论?查看或者发起勘误/讨论 主题
(发起评论需要先登录 github)

/wallpaper/wallhaven-eymj5k.jpg