mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-05 11:56:00 -04:00
Switch to modern CMake way of defining targets and installing exports
This commit is contained in:
parent
87d5e9f930
commit
af27cd0099
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -77,8 +77,8 @@ jobs:
|
|||||||
- name: Testing client code with CMake detection
|
- name: Testing client code with CMake detection
|
||||||
run: |
|
run: |
|
||||||
cd $GITHUB_WORKSPACE/exttests/cmake
|
cd $GITHUB_WORKSPACE/exttests/cmake
|
||||||
cmake . || true
|
cmake .
|
||||||
cmake --build . || true
|
cmake --build .
|
||||||
|
|
||||||
- name: Upload coverage
|
- name: Upload coverage
|
||||||
if: ${{ contains(matrix.features, 'coverage') }}
|
if: ${{ contains(matrix.features, 'coverage') }}
|
||||||
|
175
CMakeLists.txt
175
CMakeLists.txt
@ -19,17 +19,23 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|||||||
option(SDL2PP_WITH_IMAGE "Enable SDL2_image support" ON)
|
option(SDL2PP_WITH_IMAGE "Enable SDL2_image support" ON)
|
||||||
option(SDL2PP_WITH_TTF "Enable SDL2_ttf support" ON)
|
option(SDL2PP_WITH_TTF "Enable SDL2_ttf support" ON)
|
||||||
option(SDL2PP_WITH_MIXER "Enable SDL2_mixer support" ON)
|
option(SDL2PP_WITH_MIXER "Enable SDL2_mixer support" ON)
|
||||||
|
|
||||||
|
option(SDL2PP_WITH_EXAMPLES "Build examples" ON)
|
||||||
|
option(SDL2PP_WITH_TESTS "Build tests" ON)
|
||||||
|
option(SDL2PP_ENABLE_LIVE_TESTS "Enable live tests (require X11 display and audio device)" ON)
|
||||||
|
option(SDL2PP_STATIC "Build static library instead of shared one" OFF)
|
||||||
else()
|
else()
|
||||||
# please set SDL2PP_WITH_IMAGE, SDL2PP_WITH_TTF, SDL2PP_WITH_MIXER in parent project as needed
|
# please set SDL2PP_WITH_IMAGE, SDL2PP_WITH_TTF, SDL2PP_WITH_MIXER in parent project as needed
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# depends
|
# depends
|
||||||
find_package(SDL2 REQUIRED)
|
find_package(SDL2 REQUIRED)
|
||||||
set(SDL2_ALL_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
|
set(SDL2_ALL_LIBRARIES SDL2::SDL2)
|
||||||
set(SDL2_ALL_LIBRARIES ${SDL2_LIBRARY})
|
|
||||||
set(SDL2_ALL_PKGCONFIG_MODULES sdl2)
|
set(SDL2_ALL_PKGCONFIG_MODULES sdl2)
|
||||||
set(SDL2PP_EXTRA_LIBRARIES ${SDL2MAIN_LIBRARY})
|
|
||||||
set(SDL2PP_EXTRA_PKGCONFIG_LIBRARIES ${SDL2MAIN_LIBRARY})
|
if(TARGET SDL2::SDL2main)
|
||||||
|
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2main)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(MINGW)
|
if(MINGW)
|
||||||
set(MINGW32_LIBRARY "mingw32" CACHE STRING "mingw32 library")
|
set(MINGW32_LIBRARY "mingw32" CACHE STRING "mingw32 library")
|
||||||
@ -39,8 +45,7 @@ endif()
|
|||||||
|
|
||||||
if(SDL2PP_WITH_IMAGE)
|
if(SDL2PP_WITH_IMAGE)
|
||||||
find_package(SDL2_image REQUIRED)
|
find_package(SDL2_image REQUIRED)
|
||||||
set(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIR})
|
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2_image)
|
||||||
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_IMAGE_LIBRARY})
|
|
||||||
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_image")
|
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_image")
|
||||||
else()
|
else()
|
||||||
message(STATUS "SDL2_image support disabled")
|
message(STATUS "SDL2_image support disabled")
|
||||||
@ -48,8 +53,7 @@ endif()
|
|||||||
|
|
||||||
if(SDL2PP_WITH_TTF)
|
if(SDL2PP_WITH_TTF)
|
||||||
find_package(SDL2_ttf REQUIRED)
|
find_package(SDL2_ttf REQUIRED)
|
||||||
set(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_TTF_INCLUDE_DIR})
|
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2_ttf)
|
||||||
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_TTF_LIBRARY})
|
|
||||||
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_ttf")
|
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_ttf")
|
||||||
else()
|
else()
|
||||||
message(STATUS "SDL2_ttf support disabled")
|
message(STATUS "SDL2_ttf support disabled")
|
||||||
@ -57,31 +61,25 @@ endif()
|
|||||||
|
|
||||||
if(SDL2PP_WITH_MIXER)
|
if(SDL2PP_WITH_MIXER)
|
||||||
find_package(SDL2_mixer REQUIRED)
|
find_package(SDL2_mixer REQUIRED)
|
||||||
set(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_MIXER_INCLUDE_DIR})
|
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2_mixer)
|
||||||
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_MIXER_LIBRARY})
|
|
||||||
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_mixer")
|
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_mixer")
|
||||||
else()
|
else()
|
||||||
message(STATUS "SDL2_mixer support disabled")
|
message(STATUS "SDL2_mixer support disabled")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# compiler flags & definitions
|
# compiler flags & definitions
|
||||||
if(MSVC)
|
#if(MSVC)
|
||||||
set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3")
|
# set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3")
|
||||||
else()
|
#else()
|
||||||
set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wall -Wextra -pedantic")
|
# set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wall -Wextra -pedantic")
|
||||||
|
#
|
||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
# if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wmissing-prototypes -Wtautological-compare -Wshorten-64-to-32")
|
# set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wmissing-prototypes -Wtautological-compare -Wshorten-64-to-32")
|
||||||
|
#
|
||||||
# For adventurous
|
# # For adventurous
|
||||||
#set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Weverything -Wno-c++98-compat -Wno-padded")
|
# #set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Weverything -Wno-c++98-compat -Wno-padded")
|
||||||
endif()
|
# endif()
|
||||||
endif()
|
#endif()
|
||||||
|
|
||||||
list(REMOVE_DUPLICATES SDL2_ALL_INCLUDE_DIRS)
|
|
||||||
|
|
||||||
include_directories(BEFORE ${PROJECT_SOURCE_DIR})
|
|
||||||
include_directories(SYSTEM ${SDL2_ALL_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}")
|
||||||
|
|
||||||
@ -91,8 +89,6 @@ configure_file(
|
|||||||
SDL2pp/Config.hh
|
SDL2pp/Config.hh
|
||||||
)
|
)
|
||||||
|
|
||||||
include_directories(BEFORE ${PROJECT_BINARY_DIR})
|
|
||||||
|
|
||||||
# sources
|
# sources
|
||||||
set(LIBRARY_SOURCES
|
set(LIBRARY_SOURCES
|
||||||
SDL2pp/AudioDevice.cc
|
SDL2pp/AudioDevice.cc
|
||||||
@ -178,26 +174,30 @@ endif()
|
|||||||
# targets
|
# targets
|
||||||
include(GenerateExportHeader)
|
include(GenerateExportHeader)
|
||||||
|
|
||||||
|
if(SDL2PP_STATIC)
|
||||||
|
add_library(SDL2pp STATIC ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
||||||
|
set_target_properties(SDL2pp PROPERTIES
|
||||||
|
POSITION_INDEPENDENT_CODE ON
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
add_library(SDL2pp SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
||||||
|
set_target_properties(SDL2pp PROPERTIES
|
||||||
|
VERSION 8.3.0
|
||||||
|
SOVERSION 8
|
||||||
|
C_VISIBILITY_PRESET hidden
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
target_include_directories(SDL2pp PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
||||||
|
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
)
|
||||||
|
target_link_libraries(SDL2pp PUBLIC ${SDL2_ALL_LIBRARIES})
|
||||||
|
generate_export_header(SDL2pp EXPORT_FILE_NAME SDL2pp/Export.hh)
|
||||||
|
|
||||||
|
add_library(SDL2pp::SDL2pp ALIAS SDL2pp)
|
||||||
|
|
||||||
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
||||||
# options
|
|
||||||
option(SDL2PP_WITH_EXAMPLES "Build examples" ON)
|
|
||||||
option(SDL2PP_WITH_TESTS "Build tests" ON)
|
|
||||||
option(SDL2PP_ENABLE_LIVE_TESTS "Enable live tests (require X11 display and audio device)" ON)
|
|
||||||
option(SDL2PP_STATIC "Build static library instead of shared one" OFF)
|
|
||||||
|
|
||||||
# library
|
|
||||||
if(SDL2PP_STATIC)
|
|
||||||
add_library(SDL2pp STATIC ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
|
||||||
else()
|
|
||||||
add_library(SDL2pp SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
|
||||||
target_link_libraries(SDL2pp ${SDL2_ALL_LIBRARIES})
|
|
||||||
set_target_properties(SDL2pp PROPERTIES VERSION 8.3.0 SOVERSION 8)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
generate_export_header(SDL2pp EXPORT_FILE_NAME SDL2pp/Export.hh)
|
|
||||||
|
|
||||||
set(SDL2PP_LIBRARIES ${SDL2PP_EXTRA_LIBRARIES} SDL2pp ${SDL2_ALL_LIBRARIES})
|
|
||||||
|
|
||||||
# examples and tests
|
# examples and tests
|
||||||
if(SDL2PP_WITH_EXAMPLES)
|
if(SDL2PP_WITH_EXAMPLES)
|
||||||
add_subdirectory(examples)
|
add_subdirectory(examples)
|
||||||
@ -219,55 +219,42 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# pkgconfig and cmake modules
|
|
||||||
set(CMAKEMODDIR share/cmake/Modules CACHE STRING "directory where to install cmake module")
|
|
||||||
set(PKGCONFIGDIR lib/pkgconfig CACHE STRING "directory where to install pkg-config files")
|
|
||||||
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly")
|
|
||||||
set(PKGCONFIGDIR libdata/pkgconfig)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include(Join)
|
|
||||||
|
|
||||||
join_quoted("${SDL2PP_EXTRA_LIBRARIES}" SDL2PP_EXTRA_LIBRARIES_STR)
|
|
||||||
join_quoted("${SDL2_ALL_LIBRARIES}" SDL2_ALL_LIBRARIES_STR)
|
|
||||||
join_quoted("${SDL2_ALL_INCLUDE_DIRS}" SDL2_ALL_INCLUDE_DIRS_STR)
|
|
||||||
|
|
||||||
configure_file(
|
|
||||||
sdl2pp.pc.in
|
|
||||||
sdl2pp.pc
|
|
||||||
@ONLY
|
|
||||||
)
|
|
||||||
|
|
||||||
configure_file(
|
|
||||||
FindSDL2PP.cmake.in
|
|
||||||
FindSDL2PP.cmake
|
|
||||||
@ONLY
|
|
||||||
)
|
|
||||||
|
|
||||||
# install
|
# install
|
||||||
install(FILES
|
include(GNUInstallDirs)
|
||||||
${LIBRARY_HEADERS}
|
|
||||||
${PROJECT_BINARY_DIR}/SDL2pp/Config.hh
|
|
||||||
${PROJECT_BINARY_DIR}/SDL2pp/Export.hh
|
|
||||||
DESTINATION include/SDL2pp
|
|
||||||
)
|
|
||||||
install(TARGETS SDL2pp
|
install(TARGETS SDL2pp
|
||||||
RUNTIME DESTINATION bin
|
EXPORT SDL2pp-targets
|
||||||
LIBRARY DESTINATION lib
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
ARCHIVE DESTINATION lib
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
${LIBRARY_HEADERS}
|
||||||
|
${PROJECT_BINARY_DIR}/SDL2pp/Config.hh
|
||||||
|
${PROJECT_BINARY_DIR}/SDL2pp/Export.hh
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SDL2pp
|
||||||
)
|
)
|
||||||
install(FILES ${PROJECT_BINARY_DIR}/sdl2pp.pc DESTINATION ${PKGCONFIGDIR})
|
|
||||||
install(FILES ${PROJECT_BINARY_DIR}/FindSDL2PP.cmake DESTINATION ${CMAKEMODDIR})
|
|
||||||
|
|
||||||
message(STATUS "libSDL2pp ${SDL2PP_VERSION} standalone build")
|
configure_file(sdl2pp.pc.in sdl2pp.pc @ONLY)
|
||||||
else()
|
install(
|
||||||
# library
|
FILES
|
||||||
add_library(SDL2pp STATIC ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
${PROJECT_BINARY_DIR}/sdl2pp.pc
|
||||||
generate_export_header(SDL2pp EXPORT_FILE_NAME SDL2pp/Export.hh)
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
||||||
|
)
|
||||||
|
|
||||||
# provide variables to parent
|
configure_file(cmake/SDL2ppConfig.cmake.in cmake/SDL2ppConfig.cmake @ONLY)
|
||||||
set(SDL2PP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${SDL2_ALL_INCLUDE_DIRS} PARENT_SCOPE)
|
install(EXPORT SDL2pp-targets
|
||||||
set(SDL2PP_LIBRARIES ${SDL2PP_EXTRA_LIBRARIES} SDL2pp ${SDL2_ALL_LIBRARIES} PARENT_SCOPE)
|
FILE SDL2ppTargets.cmake
|
||||||
|
NAMESPACE SDL2pp::
|
||||||
message(STATUS "libSDL2pp ${SDL2PP_VERSION} bundled build")
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SDL2pp
|
||||||
|
)
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
${PROJECT_BINARY_DIR}/cmake/SDL2ppConfig.cmake
|
||||||
|
cmake/FindSDL2_image.cmake
|
||||||
|
cmake/FindSDL2_ttf.cmake
|
||||||
|
cmake/FindSDL2_mixer.cmake
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SDL2pp
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
# - Try to find SDL2pp library
|
|
||||||
#
|
|
||||||
# Once done this will define
|
|
||||||
#
|
|
||||||
# SDL2PP_FOUND
|
|
||||||
# SDL2PP_INCLUDE_DIRS
|
|
||||||
# SDL2PP_LIBRARIES
|
|
||||||
|
|
||||||
IF(SDL2PP_INCLUDE_DIR AND SDL2PP_LIBRARY)
|
|
||||||
# in cache already
|
|
||||||
SET(SDL2PP_FIND_QUIETLY TRUE)
|
|
||||||
ENDIF(SDL2PP_INCLUDE_DIR AND SDL2PP_LIBRARY)
|
|
||||||
|
|
||||||
FIND_PATH(SDL2PP_INCLUDE_DIR SDL2pp/SDL2pp.hh HINTS "@CMAKE_INSTALL_PREFIX@/include")
|
|
||||||
|
|
||||||
FIND_LIBRARY(SDL2PP_LIBRARY NAMES SDL2pp HINTS "@CMAKE_INSTALL_PREFIX@/lib")
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(SDL2PP_INCLUDE_DIR SDL2PP_LIBRARY)
|
|
||||||
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2PP
|
|
||||||
REQUIRED_VARS SDL2PP_INCLUDE_DIR SDL2PP_LIBRARY
|
|
||||||
)
|
|
||||||
|
|
||||||
IF(SDL2PP_FOUND)
|
|
||||||
SET(SDL2PP_INCLUDE_DIRS ${SDL2PP_INCLUDE_DIR} @SDL2_ALL_INCLUDE_DIRS_STR@)
|
|
||||||
SET(SDL2PP_LIBRARIES @SDL2PP_EXTRA_LIBRARIES_STR@ ${SDL2PP_LIBRARY} @SDL2_ALL_LIBRARIES_STR@)
|
|
||||||
ENDIF(SDL2PP_FOUND)
|
|
@ -1,15 +0,0 @@
|
|||||||
INCLUDE(CheckCXXSourceCompiles)
|
|
||||||
|
|
||||||
MACRO(CHECK_COMPILE RESULT_VAR CODE DESCRIPTION)
|
|
||||||
SET(SAVED_CMAKE_REQUIRED_QUIET "${CMAKE_REQUIRED_QUIET}")
|
|
||||||
SET(SAVED_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
|
|
||||||
SET(CMAKE_REQUIRED_QUIET YES)
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("${CODE}" ${RESULT_VAR})
|
|
||||||
SET(CMAKE_REQUIRED_QUIET "${SAVED_CMAKE_REQUIRED_QUIET}")
|
|
||||||
SET(CMAKE_REQUIRED_FLAGS "${SAVED_CMAKE_REQUIRED_FLAGS}")
|
|
||||||
IF(${RESULT_VAR})
|
|
||||||
MESSAGE(STATUS "Checking for ${DESCRIPTION}: yes")
|
|
||||||
ELSE(${RESULT_VAR})
|
|
||||||
MESSAGE(STATUS "Checking for ${DESCRIPTION}: no")
|
|
||||||
ENDIF(${RESULT_VAR})
|
|
||||||
ENDMACRO(CHECK_COMPILE)
|
|
@ -1,23 +0,0 @@
|
|||||||
# - Try to locate SDL2
|
|
||||||
# This module defines:
|
|
||||||
#
|
|
||||||
# SDL2_INCLUDE_DIR
|
|
||||||
# SDL2_LIBRARY, SDL2MAIN_LIBRARY
|
|
||||||
# SDL2_FOUND
|
|
||||||
#
|
|
||||||
|
|
||||||
FIND_PATH(SDL2_INCLUDE_DIR NAMES SDL.h PATH_SUFFIXES SDL2)
|
|
||||||
|
|
||||||
FIND_LIBRARY(SDL2_LIBRARY NAMES SDL2)
|
|
||||||
FIND_LIBRARY(SDL2MAIN_LIBRARY NAMES SDL2main)
|
|
||||||
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
|
||||||
|
|
||||||
IF (UNIX)
|
|
||||||
# Fedora has reportedly dropped SDLmain, so don't treat it as mandatory on *nix
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)
|
|
||||||
ELSE (UNIX)
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2MAIN_LIBRARY SDL2_INCLUDE_DIR)
|
|
||||||
ENDIF (UNIX)
|
|
||||||
|
|
||||||
MARK_AS_ADVANCED(SDL2_INCLUDE_DIR SDL2_LIBRARY SDL2MAIN_LIBRARY)
|
|
@ -1,17 +1,14 @@
|
|||||||
# - Try to locate SDL2_image
|
# SDL2::SDL2_image
|
||||||
# This module defines:
|
|
||||||
#
|
|
||||||
# SDL2_IMAGE_INCLUDE_DIR
|
|
||||||
# SDL2_IMAGE_LIBRARY
|
|
||||||
# SDL2_IMAGE_FOUND
|
|
||||||
#
|
|
||||||
|
|
||||||
FIND_PATH(SDL2_IMAGE_INCLUDE_DIR NAMES SDL_image.h PATH_SUFFIXES SDL2)
|
find_path(SDL2_IMAGE_INCLUDE_DIR NAMES SDL_image.h PATH_SUFFIXES SDL2)
|
||||||
|
find_library(SDL2_IMAGE_LIBRARY NAMES SDL2_image)
|
||||||
|
|
||||||
FIND_LIBRARY(SDL2_IMAGE_LIBRARY NAMES SDL2_image)
|
if(SDL2_IMAGE_INCLUDE_DIR AND SDL2_IMAGE_LIBRARY)
|
||||||
|
add_library(SDL2::SDL2_image UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET SDL2::SDL2_image PROPERTY IMPORTED_LOCATION ${SDL2_IMAGE_LIBRARY})
|
||||||
|
set_target_properties(SDL2::SDL2_image PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${SDL2_IMAGE_INCLUDE_DIR})
|
||||||
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
message(STATUS "Found SDL2_image: ${SDL2_IMAGE_LIBRARY}")
|
||||||
|
else()
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image REQUIRED_VARS SDL2_IMAGE_LIBRARY SDL2_IMAGE_INCLUDE_DIR)
|
message(FATAL_ERROR "Could not find SDL2_image")
|
||||||
|
endif()
|
||||||
MARK_AS_ADVANCED(SDL2_IMAGE_INCLUDE_DIR SDL2_IMAGE_LIBRARY)
|
|
||||||
|
@ -1,17 +1,14 @@
|
|||||||
# - Try to locate SDL2_mixer
|
# SDL2::SDL2_mixer
|
||||||
# This module defines:
|
|
||||||
#
|
|
||||||
# SDL2_MIXER_INCLUDE_DIR
|
|
||||||
# SDL2_MIXER_LIBRARY
|
|
||||||
# SDL2_MIXER_FOUND
|
|
||||||
#
|
|
||||||
|
|
||||||
FIND_PATH(SDL2_MIXER_INCLUDE_DIR NAMES SDL_mixer.h PATH_SUFFIXES SDL2)
|
find_path(SDL2_MIXER_INCLUDE_DIR NAMES SDL_mixer.h PATH_SUFFIXES SDL2)
|
||||||
|
find_library(SDL2_MIXER_LIBRARY NAMES SDL2_mixer)
|
||||||
|
|
||||||
FIND_LIBRARY(SDL2_MIXER_LIBRARY NAMES SDL2_mixer)
|
if(SDL2_MIXER_INCLUDE_DIR AND SDL2_MIXER_LIBRARY)
|
||||||
|
add_library(SDL2::SDL2_mixer UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET SDL2::SDL2_mixer PROPERTY IMPORTED_LOCATION ${SDL2_MIXER_LIBRARY})
|
||||||
|
set_target_properties(SDL2::SDL2_mixer PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${SDL2_MIXER_INCLUDE_DIR})
|
||||||
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
message(STATUS "Found SDL2_mixer: ${SDL2_MIXER_LIBRARY}")
|
||||||
|
else()
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer REQUIRED_VARS SDL2_MIXER_LIBRARY SDL2_MIXER_INCLUDE_DIR)
|
message(FATAL_ERROR "Could not find SDL2_mixer")
|
||||||
|
endif()
|
||||||
MARK_AS_ADVANCED(SDL2_MIXER_INCLUDE_DIR SDL2_MIXER_LIBRARY)
|
|
||||||
|
@ -1,17 +1,14 @@
|
|||||||
# - Try to locate SDL2_ttf
|
# SDL2::SDL2_ttf
|
||||||
# This module defines:
|
|
||||||
#
|
|
||||||
# SDL2_TTF_INCLUDE_DIR
|
|
||||||
# SDL2_TTF_LIBRARY
|
|
||||||
# SDL2_TTF_FOUND
|
|
||||||
#
|
|
||||||
|
|
||||||
FIND_PATH(SDL2_TTF_INCLUDE_DIR NAMES SDL_ttf.h PATH_SUFFIXES SDL2)
|
find_path(SDL2_TTF_INCLUDE_DIR NAMES SDL_ttf.h PATH_SUFFIXES SDL2)
|
||||||
|
find_library(SDL2_TTF_LIBRARY NAMES SDL2_ttf)
|
||||||
|
|
||||||
FIND_LIBRARY(SDL2_TTF_LIBRARY NAMES SDL2_ttf)
|
if(SDL2_TTF_INCLUDE_DIR AND SDL2_TTF_LIBRARY)
|
||||||
|
add_library(SDL2::SDL2_ttf UNKNOWN IMPORTED)
|
||||||
|
set_property(TARGET SDL2::SDL2_ttf PROPERTY IMPORTED_LOCATION ${SDL2_TTF_LIBRARY})
|
||||||
|
set_target_properties(SDL2::SDL2_ttf PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${SDL2_TTF_INCLUDE_DIR})
|
||||||
|
|
||||||
INCLUDE(FindPackageHandleStandardArgs)
|
message(STATUS "Found SDL2_ttf: ${SDL2_TTF_LIBRARY}")
|
||||||
|
else()
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_ttf REQUIRED_VARS SDL2_TTF_LIBRARY SDL2_TTF_INCLUDE_DIR)
|
message(FATAL_ERROR "Could not find SDL2_ttf")
|
||||||
|
endif()
|
||||||
MARK_AS_ADVANCED(SDL2_TTF_INCLUDE_DIR SDL2_TTF_LIBRARY)
|
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
FUNCTION(JOIN_SIMPLE VALUES OUTPUT)
|
|
||||||
FOREACH(_VAL ${VALUES})
|
|
||||||
IF(DEFINED _TMP)
|
|
||||||
SET(_TMP "${_TMP} ${_VAL}")
|
|
||||||
ELSE(DEFINED _TMP)
|
|
||||||
SET(_TMP "${_VAL}")
|
|
||||||
ENDIF(DEFINED _TMP)
|
|
||||||
ENDFOREACH(_VAL)
|
|
||||||
SET(${OUTPUT} "${_TMP}" PARENT_SCOPE)
|
|
||||||
ENDFUNCTION()
|
|
||||||
|
|
||||||
FUNCTION(JOIN_QUOTED VALUES OUTPUT)
|
|
||||||
FOREACH(_VAL ${VALUES})
|
|
||||||
STRING(REPLACE "\\" "\\\\" _VAL "${_VAL}")
|
|
||||||
STRING(REPLACE "\"" "\\\"" _VAL "${_VAL}")
|
|
||||||
IF(DEFINED _TMP)
|
|
||||||
SET(_TMP "${_TMP} \"${_VAL}\"")
|
|
||||||
ELSE(DEFINED _TMP)
|
|
||||||
SET(_TMP "\"${_VAL}\"")
|
|
||||||
ENDIF(DEFINED _TMP)
|
|
||||||
ENDFOREACH(_VAL)
|
|
||||||
SET(${OUTPUT} "${_TMP}" PARENT_SCOPE)
|
|
||||||
ENDFUNCTION()
|
|
15
cmake/SDL2ppConfig.cmake.in
Normal file
15
cmake/SDL2ppConfig.cmake.in
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
find_package(SDL2 REQUIRED)
|
||||||
|
|
||||||
|
if(@SDL2PP_WITH_IMAGE@)
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/FindSDL2_image.cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(@SDL2PP_WITH_TTF@)
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/FindSDL2_ttf.cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(@SDL2PP_WITH_MIXER@)
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/FindSDL2_mixer.cmake")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/SDL2ppTargets.cmake")
|
@ -32,5 +32,5 @@ endif()
|
|||||||
|
|
||||||
foreach(EXAMPLE ${EXAMPLES})
|
foreach(EXAMPLE ${EXAMPLES})
|
||||||
add_executable(${EXAMPLE} ${EXAMPLE}.cc)
|
add_executable(${EXAMPLE} ${EXAMPLE}.cc)
|
||||||
target_link_libraries(${EXAMPLE} ${SDL2PP_LIBRARIES})
|
target_link_libraries(${EXAMPLE} SDL2pp::SDL2pp)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -2,10 +2,9 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
|
|||||||
|
|
||||||
project(Test)
|
project(Test)
|
||||||
|
|
||||||
find_package(SDL2PP REQUIRED)
|
find_package(SDL2pp REQUIRED)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
include_directories(${SDL2PP_INCLUDE_DIRS})
|
|
||||||
add_executable(cmake-ext-test ../../examples/sprites.cc)
|
add_executable(cmake-ext-test ../../examples/sprites.cc)
|
||||||
target_link_libraries(cmake-ext-test ${SDL2PP_LIBRARIES})
|
target_link_libraries(cmake-ext-test SDL2pp::SDL2pp)
|
||||||
|
@ -44,18 +44,18 @@ foreach(HEADER ${LIBRARY_HEADERS})
|
|||||||
string(REGEX REPLACE [^a-zA-Z0-9] _ HEADER_NORMALIZED ${HEADER})
|
string(REGEX REPLACE [^a-zA-Z0-9] _ HEADER_NORMALIZED ${HEADER})
|
||||||
configure_file(header_test.cc.in ${HEADER_NORMALIZED}_test.cc)
|
configure_file(header_test.cc.in ${HEADER_NORMALIZED}_test.cc)
|
||||||
add_executable(${HEADER_NORMALIZED}_test ${HEADER_NORMALIZED}_test.cc)
|
add_executable(${HEADER_NORMALIZED}_test ${HEADER_NORMALIZED}_test.cc)
|
||||||
target_link_libraries(${HEADER_NORMALIZED}_test ${SDL2PP_LIBRARIES})
|
target_link_libraries(${HEADER_NORMALIZED}_test SDL2pp::SDL2pp)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
foreach(TEST ${CLI_TESTS})
|
foreach(TEST ${CLI_TESTS})
|
||||||
add_executable(${TEST} ${TEST}.cc)
|
add_executable(${TEST} ${TEST}.cc)
|
||||||
target_link_libraries(${TEST} ${SDL2PP_LIBRARIES})
|
target_link_libraries(${TEST} SDL2pp::SDL2pp)
|
||||||
add_test(${TEST} ${TEST})
|
add_test(${TEST} ${TEST})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
foreach(TEST ${LIVE_TESTS})
|
foreach(TEST ${LIVE_TESTS})
|
||||||
add_executable(${TEST} ${TEST}.cc)
|
add_executable(${TEST} ${TEST}.cc)
|
||||||
target_link_libraries(${TEST} ${SDL2PP_LIBRARIES})
|
target_link_libraries(${TEST} SDL2pp::SDL2pp)
|
||||||
if(SDL2PP_ENABLE_LIVE_TESTS)
|
if(SDL2PP_ENABLE_LIVE_TESTS)
|
||||||
add_test(${TEST} ${TEST})
|
add_test(${TEST} ${TEST})
|
||||||
endif()
|
endif()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user