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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值