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/README.md

3.3 KiB

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)