# Introduction to SDL with CMake The easiest way to use SDL is to include it as a subproject in your project. We'll start by creating a simple project to build and run [hello.c](hello.c) # Get a copy of the SDL source: ```sh git clone https://github.com/libsdl-org/SDL.git vendored/SDL ``` # Create the file CMakeLists.txt ```cmake cmake_minimum_required(VERSION 3.16) project(hello) # set the output directory for built objects. # This makes sure that the dynamic library goes into the build directory automatically. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$") # This assumes the SDL source is available in vendored/SDL add_subdirectory(vendored/SDL EXCLUDE_FROM_ALL) # Create your game executable target as usual add_executable(hello WIN32 hello.c) # Link to the actual SDL3 library. target_link_libraries(hello PRIVATE SDL3::SDL3) ``` # Configure and Build: ```sh cmake -S . -B build cmake --build build ``` # Run: The executable should be in the `build` directory: ```sh cd build ./hello ``` If there wasn't an executable there despite the above Build section running successfully, it's likely because you're following this guide using the Visual Studio toolchain, it should instead be in the `build/Debug` directory: ```sh cd build/Debug ./hello ``` A more complete example is available at: https://github.com/Ravbug/sdl3-sample Additional information and troubleshooting is available in [README-cmake.md](README-cmake.md)