This is a minimal example for building and using SDL3 from source using C++ and CMake. It also demonstrates setting up things like macOS/iOS bundles. See src/main.cpp for the code.
Are you a complete beginner? If so, read this! Otherwise, install CMake and your favorite compiler, and follow the commands below:
# You need to clone with submodules, otherwise SDL will not download.
git clone https://github.com/Ravbug/sdl3-sample --depth=1 --recurse-submodules
cd sdl3-sample
cmake -S . -B build
You can also use an init script inside config/
. Then open the IDE project inside build/
(If you had CMake generate one) and run!
I have tested the following:
Platform | Architecture | Generator |
---|---|---|
macOS | x86_64, arm64 | Xcode |
iOS | x86_64, arm64 | Xcode |
tvOS | x86_64, arm64 | Xcode |
visionOS* | arm64 | Xcode |
Windows | x86_64, arm64 | Visual Studio |
Linux | x86_64, arm64 | Ninja, Make |
Web* | wasm | Ninja, Make |
Android* | x86, x64, arm, arm64 | Ninja via Android Studio |
*See further instructions in config/
Note: UWP support was removed from SDL3 during its development. For historical reasons, you can get a working UWP sample via this commit: df270da
Just update the submodule:
cd SDL
git pull
You don't need to use a submodule, you can also copy the source in directly. This repository uses a submodule to keep its size to a minimum. Note that as of writing, SDL3 is in development, so expect APIs to change.
Is something not working? Create an Issue or send a Pull Request on this repository!