aui-framework / aui

Declarative UI toolkit for modern C++20
Mozilla Public License 2.0
46 stars 13 forks source link
c-plus-plus c-plus-plus-20

AUI (Advanced Universal Interface)

build badge Codacy Badge

logo

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

Quickstart

Linux dependencies

If you are using Linux, install following dependencies:

Ubuntu

sudo apt install pkg-config libfontconfig-dev libxcursor-dev libxi-dev libxrandr-dev libglew-dev libstdc++-static libpulse-dev libdbus-1-dev

Fedora

sudo dnf install fontconfig-devel libXi libglvnd-devel libstdc++-static glew-devel pulseaudio-libs-devel

Your project CMake script

To 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)

Key features

Module list

Feature support

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

Used libraries

Examples

Check the examples/ folder.

Fractal

Views

Minesweeper

Contributing

You are always free to contribute to this project and add yourself to the authors list :)

Workflow

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.