SDL2 CMake modules
This repository contains CMake modules for finding and using the SDL2 library as well as other related libraries:
These modules are based on the SDL (1.2) modules, with the same names, distributed with the CMake project. The SDL2_gfx module is also based on the SDL_image module.
Details and Improvements
The improvements made to these modules are as follows:
FindSDL2.cmake
- Adapt
FindSDL.cmake
toSDL2
(FindSDL2.cmake
). - Add cache variables for more flexibility:
SDL2_PATH
,SDL2_NO_DEFAULT_PATH
- Mark
Threads
as a required dependency for non-OSX systems. - Modernize the
FindSDL2.cmake
module by creating specific targets:SDL2::Core
: Library project should link toSDL2::Core
SDL2::Main
: Application project should link toSDL2::Main
For more details, please see the embedded documentation in FindSDL2.cmake
file.
FindSDL2_<COMPONENT>.cmake
- Adapt
FindSDL_<COMPONENT>.cmake
toSDL2_<COMPONENT>
(FindSDL2_<COMPONENT>.cmake
). - Add cache variables for more flexibility:
SDL2_<COMPONENT>_PATH
,SDL2_<COMPONENT>_NO_DEFAULT_PATH
- Add
SDL2
as a required dependency. - Modernize the
FindSDL2_<COMPONENT>.cmake
modules by creating specific targets:
SDL2::Image
,SDL2::TTF
,SDL2::Net
,SDL2::Mixer
andSDL2::GFX
.
For more details, please see the embedded documentation in
FindSDL2_<COMPONENT>.cmake
file.
Special customization variables
Each module have special customization cache variables that can be used to help the modules find the appropriate libraries:
SDL2_PATH
andSDL2_<COMPONENT>_PATH
:
Can be specified to set the root search path for theSDL2
andSDL2_<COMPONENT>
SDL2_NO_DEFAULT_PATH
andSDL2_<COMPONENT>_NO_DEFAULT_PATH
:
Disable searchSDL2/SDL2<COMPONENT>
library in default path:
IfSDL2[_<COMPONENT>]_PATH
is set, defaults to ON
Else defaults to OFFSDL2_INCLUDE_DIR
andSDL2_<COMPONENT>_INCLUDE_DIR
:
Set headers path. (Override)SDL2_LIBRARY
andSDL2_<COMPONENT>_LIBRARY
:
Set the library (.dll, .so, .a, etc) path. (Override)SDL2MAIN_LIBRAY
:
Set theSDL2main
library (.a) path. (Override)
These variables could be used in case of Windows projects, and when the
libraries are not localized in a standard pathes. They can be specified when
executing the cmake
command or when using the CMake GUI (They are marked
as advanced).
cmake command example:
mkdir build
cd build
cmake .. -DSDL2_PATH="/path/to/sdl2"
CMakeLists.txt example:
If we embed, for example, binaries of the SDL2_ttf in our project, we can
specify the cache variables values just before calling the find_package
command as follows:
set(SDL2_TTF_PATH "/path/to/sdl2_ttf" CACHE BOOL "" FORCE)
find_package(SDL2_ttf REQUIRED)