This repository has been archived on 2021-01-10. You can view files and clone it, but cannot push or open issues or pull requests.

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 to SDL2 (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 to SDL2::Core
    • SDL2::Main : Application project should link to SDL2::Main

For more details, please see the embedded documentation in FindSDL2.cmake file.

FindSDL2_<COMPONENT>.cmake

  • Adapt FindSDL_<COMPONENT>.cmake to SDL2_<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 and SDL2::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 and SDL2_<COMPONENT>_PATH:
    Can be specified to set the root search path for the SDL2 and SDL2_<COMPONENT>
  • SDL2_NO_DEFAULT_PATH and SDL2_<COMPONENT>_NO_DEFAULT_PATH:
    Disable search SDL2/SDL2<COMPONENT> library in default path:
    If SDL2[_<COMPONENT>]_PATH is set, defaults to ON
    Else defaults to OFF
  • SDL2_INCLUDE_DIR and SDL2_<COMPONENT>_INCLUDE_DIR:
    Set headers path. (Override)
  • SDL2_LIBRARY and SDL2_<COMPONENT>_LIBRARY:
    Set the library (.dll, .so, .a, etc) path. (Override)
  • SDL2MAIN_LIBRAY:
    Set the SDL2main 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)
Description
No description provided
Readme 64 KiB
Languages
CMake 100%