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/下捆绑的字体或图标字体,均遵循各自上游的许可证和版权声明。

相关推荐
Flynt3 小时前
就编译了一下代码,浏览器密码没了——Rust 生态遭遇史上最狠供应链攻击
安全·rust·开源
小小龙学IT4 小时前
ZeroMQ(libzmq)开源消息库深度解析:brokerless 时代的轻量消息内核
c++·开源
程序员老刘4 小时前
被400次配置逼疯后,我开源了个小工具
开源·ai编程
天工开物开源基金会5 小时前
具身智能开源全栈生态协同分论坛成功举办
开源·开源大会·天工开物
IvanCodes7 小时前
GitHub 本周热门开源项目:Agent Infra与端侧 AI|8.17–8.23
开源·github
fthux8 小时前
装修怕增项、合同看不懂?我做了 RenoPit,帮普通业主提前发现装修坑
人工智能·ai·开源·github·open source·renopit
a1117768 小时前
艺术的箱庭小镇 THreeJS 开源
前端·开源
找方案8 小时前
MiniMax开源5款大模型全链路,从文本到视频生成全覆盖
开源·音视频·视频生成·开源大模型·minimax·多模态生成·h3模型
河南三丰环保设备有限公司8 小时前
哪个机构教炼油设备技术教得好
开源