# appkit **Repository Path**: newgolo/appkit ## Basic Information - **Project Name**: appkit - **Description**: appkit是一个基于嵌入式Linux的具有可移植性的C++程序开发框架,其目的是为了加快LInux应用程序的开发速度,解放程序员的大脑和双手,让大家把精力投入到更有意义的事情当中去。 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 282 - **Forks**: 147 - **Created**: 2018-09-02 - **Last Updated**: 2026-08-05 ## Categories & Tags **Categories**: iot **Tags**: Linux, Cpp, embedme ## README # appkit [English](README.md) ## 介绍 appkit 是一个具有可移植性的 Linux 应用开发库,其目的是为了加快应用程序的开发速度,提升应用程序的健壮性,以解放程序员的大脑和双手,让大家把精力投入到更有意义的事情当中去。 项目采用**两层架构**: | 层级 | 库 | 说明 | 详细文档 | |------|-----|------|---------| | 基础层 | **appkit** | 提供线程、协程、定时器、IPC、串口、Socket、状态机等基础组件 | [sources/appkit/README.zh.md](sources/appkit/README.zh.md) | | 应用层 | **foundation** | 提供日志、配置管理(JSON/YAML)、MQTT、WebSocket、数据库(KV/SQLite/共享内存)、数据压缩加密、V4L2 视频采集等高层组件 | [sources/foundation/README.zh.md](sources/foundation/README.zh.md) | ### appkit 核心模块 应用框架(Application)、基础类型与工具(BasicType)、线程(Thread)、异步任务(Async)、协程(Coroutine)、定时器(Timer)、事件通知(Event)、文件 IO(FileIO)、时间日期(DateTime)、字符串工具(StrUtil)、正则匹配(RegExp)、有限状态机(FSMachine)、串口(SerialPort)、网络通信(Socket/Network)、IPC(消息队列/共享内存/内存池/管道)、GPIO 控制(PinCtrl)、SPI 通信(SpiDev)、插件加载(Pluglet)、信号槽(QTools)、命令行解析(QTools)、日志跟踪(Tracer)、单例(Singleton)、原子容器(Atomic)、单元测试(CppUnit) 等 Linux 应用开发中常用的模块。 ### foundation 核心模块 fmt 格式化日志(app_log)、应用日志与崩溃捕获(app_logger)、JSON 配置(json_config)、YAML 配置(yaml_config)、数据压缩(LZ4/Zstd)、数据加密(XOR/RSA/AES)、KV 存储(LevelDB)、SQLite ORM 存储(db_storage)、共享内存数据库(shm_db)、MQTT 客户端(mqtt_client)、WebSocket 客户端与服务端(web_socket)、串口客户端(serial_client)、gRPC 接口(grpc_interface)、Protobuf 助手(proto_helper)、HTTP 状态码(http_state)、输入设备(input_device)、PPS 秒脉冲设备(pps_device)、V4L2 视频采集与输出(v4l2_device)。 ### 集成开源库 项目中集成了以下优秀的开源库: spdlog, fmt, nlohmann-json, yaml-cpp, sqlite_orm, LevelDB, simdb, paho.mqtt.c/cpp, IXWebSocket, Botan, lz4, zstd, Google Breakpad, gRPC/Protobuf, cppzmq/zeromq, DIMCli, tinyfsm, kacanopen, libcrc, rtsp-server 等。 感谢这些开源库的作者的无私奉献! ## 目录结构 ``` appkit/ ├── sources/ │ ├── appkit/ # 基础库(26 个源文件, 27 个头文件, 12 个测试) │ ├── foundation/ # 应用库(12 个源文件, 19 个头文件, 10 个测试) │ └── third_party/ # 第三方依赖库(15 个) ├── ws_apps/ # 应用示例(test_demos) ├── ws_rospkgs/ # ROS 功能包(commons, demo_msgs, demo_node) ├── scripts/ # 运行脚本(setup.bash, systemd 服务等) ├── prebuilt/ # 预编译依赖库(linux-amd64 / linux-arm64) ├── version/ # 版本号管理 ├── cmake/ # CMake 模块(common, finder, xbuild 等) ├── environ/ # 编译环境(envsetup, docker, toolchains) ├── host-x64-xbuild.sh # 本地非 ROS 编译脚本 ├── host-x64-rosenv.sh # 本地 ROS 编译脚本 ├── docker_cmd.sh # Docker 交叉编译脚本 └── build-config.cmake # 顶层编译配置 ``` ## 作者 有任何问题,欢迎联系: cblock@126.com 牛咕噜大人 ## 开源协议 本软件遵循MIT协议,请自觉遵守该协议,如果您使用此源码,请务必保留README在您的工程代码目录下! ## 编译说明 ### 环境要求 - CMake >= 3.16 - C++17 编译器(GCC 9+ / Clang 10+) - Ubuntu 20.04 / 22.04(推荐) ### 系统依赖(根据使用的特性选择性安装) ```bash apt install uuid-dev # USE_UUID apt install libv4l-dev # USE_V4L2 apt install libssl-dev # USE_OPENSSL / USE_BOTAN apt install libfmt-dev # USE_FMT apt install libopencv-dev # USE_OPENCV apt install libpcl-dev # USE_LIBPCL ``` ### 本地编译(非 ROS,x86_64) 使用 xbuild 编译系统,不依赖 ROS 环境: ```bash source environ/envsetup.sh xbuild_setup linux-amd64 release xbuild mkdir -p xbuild/linux-amd64-host && cd xbuild/linux-amd64-host mkdir build && cd build cmake .. make install ``` 或直接使用脚本: ```bash ./host-x64-xbuild.sh ``` 编译输出目录为 `xbuild/linux-amd64-host/install`。 ### ROS 环境编译 同时支持 ROS1(noetic)和 ROS2(humble/jazzy): ```bash # ROS1 sudo apt install ros-noetic-catkin ./host-x64-rosenv.sh -r noetic # ROS2 sudo apt install python3-colcon-common-extensions ``` 编译输出目录为 `xrosenv/linux-amd64-host`。 ### Docker 交叉编译(ARM64) 使用 Docker 构建 aarch64 版本,参考 [交叉编译环境 Dockerfile](environ/docker/Dockerfile-x64-ubuntu20-noetic): ```bash ./docker_cmd.sh xbuild # 构建 aarch64 非 ROS 应用 ./docker_cmd.sh build # 构建 aarch64 ROS 应用 ``` ### 可选编译选项 | 选项 | 默认值 | 说明 | |------|--------|------| | `USE_UUID` | 0 | UUID 支持 | | `USE_V4L2` | 0 | V4L2 视频采集 | | `USE_LEVELDB` | 0 | LevelDB KV 存储 | | `USE_WEBSOCKET` | 0 | WebSocket 支持 | | `USE_BOTAN` | 1 | Botan 加密库 | | `USE_FFMPEG` | 1 | FFmpeg 支持 | | `USE_SHMDB` | 1 | 共享内存数据库 | | `XBUILD_TEST` | — | 编译测试程序 | 选项定义在 `sources/package.cmake`,可通过 cmake `-D` 参数覆盖。 ## 运行说明 以非 ROS 应用为例: ```bash cd xbuild/linux-amd64-host/install source setup.bash test_appkit ``` ## 参与贡献 1. Fork 本仓库 2. 新建 feature_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 相关文档 - [AppKit 基础库详细文档](sources/appkit/README.zh.md) - [Foundation 应用库详细文档](sources/foundation/README.zh.md) - [第三方库说明](sources/third_party/src/README.md)