Platform support
Before we begin, here's a list of the current officially supported platforms:
- Windows
- macOS - Some platform-dependent window functions do not exist
- Linux
- X11
- Wayland - Missing all window platform-dependent functions
- WASM - Limited in capabilities
Wayland issues
Currently we have not implemented most platform-dependent windowing functions for Wayland, due to it being "usable" but not development-ready as of now. Parts of the window interface may also be broken on Wayland.
About WASM's limitations
As you know Web Assembly, a.k.a. WASM runs inside a web browser, which means it's sandboxed. Moreover, a WASM file relies on JavaScript code for any functionality it doesn't implement itself. This means that the following features of the framework will not work, or will work differently, when targeting WASM:
- The whole OS module and its submodules are disabled
- Vulkan renderer is automatically replaced by the WebGPU renderer
- All platform-dependent window functions are unavailable
- Much of the window interface itself will not work
- Working with the clipboard through code is finicky, as is working with it through user input :/
- Plugin support is disabled, since Emscripten requires that all libraries and applications use static linking
- The
get*
functions from the renderer interface are mostly unavailable
Dependencies
Windows
- Visual Studio
- MSVC
- A GPU that supports Vulkan 1.3
- CMake
- Git (including the git bash)
- GitLFS
- Vulkan SDK
After all of this is installed, give yourself symlink permissions. To
do that, open run
and run secpol.msc
:
A window like this should open:
Navigate to Local Policies -> User Rights Assignment
and double-click on the value of Create symbolic links
:
Click on Add User or Group
. Inside the text box, type in
your name and then click Check Names
for it to
auto-complete. Click Ok
, exit the window, log out and log
back in.
Caution
Setting the security policy and logging in and out is required for the framework to install. Do not take this step lightly.
macOS
On macOS you need to install homebrew and preferably, Xcode, or an IDE like CLion.
The following libraries should be installed using homebrew:
user $ brew install glfw yaml-cpp
After that, install the Vulkan SDK.
Caution
The homebrew packages for vulkan are incomplete and cannot be used for actual local development. Please install the Vulkan SDK manually! That being said, they are useful for CI builds, where you can use them without any problems.
Linux
- make
- gcc compiler/libc that supports C++ 17
- CMake
- Vulkan-Loader and GPU drivers
- A GPU that supports Vulkan 1.2
Additional developer packages may be required, especially when compiling with system-wide libraries. Packages are listed below.
Debian/Ubuntu:
sudo apt-get install git gcc make g++ cmake libglfw3 libglfw3-dev libyaml-cpp-dev libvulkan-dev libvulkan1 libxinerama-dev libxcursor-dev libxi-dev pkgconf libfreetype-dev libdbus-dev policykit-1 libpolkit-agent-1-dev libpolkit-gobject-1-dev libfontconfig-dev vulkan-validationlayers vulkan-validationlayers-dev libxkbcommon-dev
Fedora:
sudo dnf install git gcc make g++ cmake glfw glfw-devel freetype freetype-devel vulkan vulkan-devel yaml-cpp yaml-cpp-devel dbus dbus-devel polkit polkit-devel fontconfig-devel vulkan-validation-layers-devel
Gentoo:
doas emerge glfw vulkan-layers vulkan-loader xorg-x11 freetype yaml-cpp sys-apps/dbus polkit fontconfig
Arch:
sudo pacman -S base-devel cmake git glfw freetype2 yaml-cpp dbus polkit fontconfig vulkan-headers vulkan-validation-layers make gcc xorg-server libxinerama libxcursor libxi pkgconf
* For Vulkan packages and drivers, refer to the manual on the arch wiki.
Void:
sudo xbps-install git gcc make cmake glfw freetype yaml-cpp dbus polkit fontconfig pkgconf Vulkan-Headers Vulkan-ValidationLayers xorg libX11 libX11-devel yaml-cpp-devel glfw-devel freetype-devel dbus-devel polkit-devel fontconfig-devel
NixOS:
A note from Stanislav
Vasilev(Madman10K), the founder of MadLadSquad: As I like to say
Nix arbeitet nix!
. Please don't use this pile of garbage
and choose a normal Linux distribution. Unfortunately, however, I am
forced to use the framework in a Nix environment for work-related
reasons that are confidential. Anyway, if any masochist around here
wants to actually use nix, you can run nix-shell
after
cloning the repository.
This should be enough for local development, however we're not planning to add any further support for NixOS in the future. As said previously, consider migrating to a normal Linux system. Some examples include:
- Debian
- Ubuntu
- Linux Mint
- Fedora
- Arch Linux
- Gentoo Linux
- Void Linux
- Linux from scratch
- Slackware
- RHEL
- openSUSE
Install
Steps:
- Clone the framework using
git
:git clone https://github.com/MadLadSquad/UntitledImGuiFramework.git --recursive
- Enter the new folder
- Run the
install.sh
script. This will install the necessary files for the framework, but will not compile it. If the script failed, check out how to clean up your environment in the troubleshooting section below. Run instructions below:- On Windows, git bundles Git Bash which emulates the bash shell found
on Linux, so you can run it with
https://madladsquad.com/install.sh
or runbash install.sh
into CMD - On Linux, just run it with the terminal by using
https://madladsquad.com/install.sh
- On Windows, git bundles Git Bash which emulates the bash shell found
on Linux, so you can run it with
- Answer the prompts
- Wait
- If there is an error, read through the error log and go to Troubleshooting.
After the install
script is finished, you can now create
your project. To create a project, use the same script running
instructions below and do the following:
- Run
https://madladsquad.com/create-project.sh
- Enter your application's name
- Wait
- If there was an error, read the error log and go to Troubleshooting.
- Your project will be built under the
Projects/<project name>/build
directory
Tip
You can run https://madladsquad.com/create-project.sh name
to create a project
in a headless environment like a CI server
Caution
Make sure that you're running the terminal instance as an
Administrator
when running in headless mode
Troubleshooting
Cleaning up your environment when the installation fails
Builds sometimes fail and while it's important to report build
problems to us here, it's also important to know how to rebuild once the
problem is resolved. The issue is, without proper clean-up, you can't
rerun the https://madladsquad.com/install.sh
script.
Generally, this is done automatically when the
install.sh
script runs. In case of an issue, below are some
things you can do:
- Delete the
build
folder under theUVKBuildTool
folder - Delete the
Projects
folder - Go back to the framework directory
- Rerun
install.sh
Visual Studio: Command Line error /02 and /RTC1 options are incompatible
This is a very common generation error. To fix it, right-click on the
UntitledImGuiFramework
project in the
Solution Explorer
then click the Properties
button.
Next, navigate to the C/C++
section, expand the list and
click on Code Generation
. Inside the list view, you should
see a setting called Basic Runtime Checks
, which you need
to set to Default
.
Other errors
Don't see your error here? Please create an issue to the GitHub issue tracker and send us your build log with your system information. This way, we can resolve your problem, and if needed, document it here if needed. Thanks for using the UntitledImGuiFramework 😀
- Home
- Beginner content
- Install guide
- Creating and using the UI components
- The Instance
- The Init Info struct
- Textures
- Logging
- Unicode support
- Additional features
- Client-side bar
- Custom type definitions
- Memory management
- C API development
- Config files and Folders
- Interfaces
- Internal Event safety
- Customising the build system
- Modules system
- Collaborating with others
- Advanced content
- Developer and contributor resources
- Misc