mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-31 16:26:03 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
 | |
| # 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}/$<CONFIGURATION>")
 | |
| set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
 | |
| 
 | |
| # 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)
 | 
