Cross-platform high performance efficient module-based framework for developing and deploying hardware accelerated graphical desktop applications using modern C++20.
Documentation | Getting started | News | Discussions
If you are using Linux, install following dependencies:
sudo apt install pkg-config libfontconfig-dev libxcursor-dev libxi-dev libxrandr-dev libglew-dev libstdc++-static libpulse-dev libdbus-1-devsudo dnf install fontconfig-devel libXi libglvnd-devel libstdc++-static glew-devel pulseaudio-libs-develTo link AUI to your project, use the following CMake script:
# Standard routine
cmake_minimum_required(VERSION 3.16)
project(aui_app)
# Tip: in a production project don't use branch name, use a specific name tag (i.e. v1.1.1),
# but for a sandbox project branch name is perfectly enough
set(AUI_VERSION master)
# Use AUI.Boot
file(
DOWNLOAD
https://raw.githubusercontent.com/aui-framework/aui/${AUI_VERSION}/aui.boot.cmake
${CMAKE_CURRENT_BINARY_DIR}/aui.boot.cmake)
include(${CMAKE_CURRENT_BINARY_DIR}/aui.boot.cmake)
# import AUI
auib_import(aui https://github.com/aui-framework/aui
COMPONENTS core views
VERSION ${AUI_VERSION})
# Create the executable. This function automatically links all sources from the src/ folder,
# creates CMake target and places the resulting executable to bin/ folder.
aui_executable(${PROJECT_NAME})
# Link required libs
aui_link(${PROJECT_NAME} PRIVATE aui::core aui::views)
- Extended common types (containers, strings, streams, etc...)
- Graphical User Interfaces, including framework tools for fast declarative UI producing using modern C++ capabilities
- Resource compiler (assets)
- Internationalization (i18n)
- DPI support
- CMake deployment scripts
- Model binding and ORM
- Encryption
- IO streams
- Networking, including http(s) requests
- DBMS integration including SQL query builder
- Both asynchronous and synchronous application architecture support
aui.core- basic types (containers, strings, streams, etc...)aui.crypt- wrapper around OpenSSL for encryption functionalityaui.curl- wrapper around libcurl for http/https requestsaui.designer- UI Designer (in dev)aui.data- DBMS interface and ORMaui.image- popular image format loaderaui.json- JSON parseraui.mysql- MySQL driver foraui.dataaui.network- networkingaui.sqlite- SQLite driver foraui.dataaui.svg- SVG image loaderaui.toolbox- resource compileraui.views- UI toolkitaui.xml- XML parser
-equals unsupported?equals planned+equals almost completely supported#equals fully supported
| Feature or module | Windows Vista/7/8/8.1/10 | Windows XP | Linux | Android | MacOS | iOS |
|---|---|---|---|---|---|---|
| aui.core | # | # | # | # | # | # |
| aui.crypt | # | # | # | # | # | # |
| aui.curl | # | # | # | # | # | # |
| aui.data | # | # | # | # | # | # |
| aui.designer | ? | ? | ? | - | ? | - |
| aui.image | # | # | # | # | # | # |
| aui.json | # | # | # | # | # | # |
| aui.mysql | # | # | # | # | ? | ? |
| aui.network | # | # | # | # | + | + |
| aui.sqlite | # | # | # | # | # | # |
| aui.svg | # | # | # | # | # | # |
| aui.toolbox | # | # | # | - | # | - |
| aui.views | # | ? | + | + | + | + |
| aui.xml | # | # | # | # | # | # |
| Assets | # | # | # | # | + | + |
| Filesystem | # | # | # | # | + | + |
| Process creation | # | # | # | - | ? | - |
| Compiler | Support |
|---|---|
| MSVC 19+ (Visual Studio 20+) | Full |
| gcc (8+) | Full |
| MinGW (8+) | Partial |
| Cross-compile MinGW | Partial |
| clang | Full |
libcurlfor http/https requestsOpenSSLfor encryptionOpenGLas graphics hardware acceleration backendglmfor linear algebrastbimagefor image loadingfreetype2for font rendering
Check the examples/ folder.
You are always free to contribute to this project and add yourself to the authors list :)
master branch contains code of the release candidate. Code of this branch must compile without errors and should pass
all tests on all supported platforms.
Each feature of the framework is created in a separate branch in the feat/ folder. Pulling changes from your branch to
master is possible only if the merge with your branch does not generate merge conflicts and does not break the build
and tests.