EUI-NEO C++ 轻量跨平台 GUI

EUI-NEO是一个纯 C++ 做的轻量跨平台 GUI

环境要求

  • CMake 3.14+

  • C++17 编译器:MSVC 19.29+(Visual Studio 2019 16.11+)、GCC/MinGW-w64 12+ 或 Clang 14+

  • OpenGL 开发文件(用于默认渲染器)

  • EUI-NEO ​ 放置在 external/EUI-NEO目录下,然后创建:

    cmake_minimum_required(VERSION 3.14)
    project(MyProject LANGUAGES C CXX)

    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    add_subdirectory(external/EUI-NEO)

    add_executable(my_app app.cpp)
    eui_neo_configure_app(my_app)

app.cpp

复制代码
#include "eui_neo.h"

namespace app {

const DslAppConfig& dslAppConfig() {
    static const DslAppConfig config = DslAppConfig{}
        .title("My App")
        .pageId("my_app")
        .windowSize(960, 640);
    return config;
}

void compose(eui::Ui& ui, const eui::Screen& screen) {
    ui.column("root")
        .size(screen.width, screen.height)
        .padding(32.0f)
        .content([&] {
            ui.text("title")
                .text("Hello EUI-NEO")
                .fontSize(28.0f)
                .build();
        })
        .build();
}

} // namespace app

构建:

复制代码
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
./build/my_app

eui_neo_configure_app()会添加所选的 GLFW/SDL2 入口点、链接 eui::neo、应用平台可执行文件设置,并部署运行时资源。应用程序不应直接引用 core/下的文件。

发布版 SDK 同样支持该目标配置:

复制代码
find_package(EuiNeo CONFIG REQUIRED)
add_executable(my_app app.cpp)
eui_neo_configure_app(my_app)

有关安装、FetchContent、SDL2/Vulkan 选择以及自定义主循环的详细信息,请参阅集成指南(Integration Guide)。有关构建本仓库及依赖要求的说明,请参阅开发与发布(Development And Release)。


Xmake

Xmake 3.0+ 支持源码构建以及 xrepo 库使用者:

复制代码
set_languages("cxx17")
add_requires("eui-neo")

target("my_app")
    set_kind("binary")
    add_files("main.cpp", "app.cpp")
    add_packages("eui-neo")

xrepo 包提供 eui_neo库;main.cpp负责窗口循环和应用程序入口点。直接构建本仓库时,eui.app规则会添加所选平台的入口点并部署资源。

构建仓库中的示例:

复制代码
xmake f -m debug -y --apps=y --user_apps=y
xmake build gallery
xmake f -m release -y --apps=y --user_apps=y
xmake build gallery

在 Windows 上,可执行文件路径为 .xmake/build/windows/x64/<debug|release>/gallery.exe。有关后端选项和其他目标,请参阅集成指南(Integration Guide)。


可选模块

可选功能模块位于 modules/目录下,相关文档请参阅模块指南(Modules Guide)。


项目结构

目录 说明
assets/ 运行时资源:字体、PNG、SVG 和图标
components/ 基于 DSL 构建的可复用 UI 组件
core/ DSL、运行时、图元、文本、图像、网络和平台代码
docs/ 实现说明和 API 文档
examples/ 简短的单屏 API 演示
modules/ 可选功能模块,如键盘和串口
apps/ 较长或多页面应用;每个应用位于独立文件夹中
include/ 公共头文件路径:eui_neo.heui/*外观头文件
tests/ 探测源码、夹具应用和本地基准测试说明
3rd/ 第三方构建源码和单文件依赖项

文档

  • DSL 设计与当前实现(DSL Design And Current Implementation)

  • 组件

  • 模块

  • 状态模型(State Model)

  • 布局

  • 事件

  • 动画

  • 异步

  • 渲染后端架构与管线(Render Backend Architecture And Pipeline)

  • 保留层缓存(Retained Layer Cache)

  • 图像

  • 网络

  • 平台能力(Platform Capabilities)

  • 集成指南(Integration Guide)

  • Shadertoy 图元(Shadertoy Primitive)

  • 开发与发布(Development And Release)


许可证

EUI-NEO 的源代码基于 Apache License 2.0 ​ 许可证开源。3rd/下的第三方代码、CMake 获取的构建时可选依赖项,以及 assets/下捆绑的字体或图标字体,均遵循各自上游的许可证和版权声明。

相关推荐
zzzzzz31015 小时前
anthropics/skills:高关注度“官方技能”项目,应该怎样读
人工智能·开源·github
梦梦代码精1 天前
《回收租赁系统技术选型避坑指南:业务闭环与二开自由度详解》
开发语言·低代码·docker·开源·代码规范
冬奇Lab1 天前
一天一个开源项目(第213篇):public-apis —— 474k Star 的免费 API 终极清单
开源·资讯
vipjx11 天前
2026实测百度网盘文件满速下载方案:主流油猴脚本搭配技巧汇总
开源
辰域电子1 天前
STM32项目开源:智能万年历/智能闹钟设计(代码+原理图+仿真)
stm32·单片机·嵌入式硬件·开源·proteus
分布式存储与RustFS1 天前
RustFS 1.0 GA 前的生产验收清单:从 rc.1 到 GA 该准备什么
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
ApacheSeaTunnel1 天前
195 次合并、13 个新连接器!Apache SeaTunnel 8 月有哪些新进展?
大数据·开源·数据集成·seatunnel·技术分享·数据同步
上官唐云1 天前
2024届本科 | C++ Linux服务端开发求职:从嵌入式到底层服务端的技术之路(附开源项目+简历)
linux·c++·开源·求职招聘
苏灿烤鱼1 天前
当程序员遇到装修:用 AI 画 CAD、搭房子,甚至自己做家具
开源·agent·mcp