mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 10:55:57 -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
|
||||
run: |
|
||||
cd $GITHUB_WORKSPACE/exttests/cmake
|
||||
cmake . || true
|
||||
cmake --build . || true
|
||||
cmake .
|
||||
cmake --build .
|
||||
|
||||
- name: Upload 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_TTF "Enable SDL2_ttf 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()
|
||||
# please set SDL2PP_WITH_IMAGE, SDL2PP_WITH_TTF, SDL2PP_WITH_MIXER in parent project as needed
|
||||
endif()
|
||||
|
||||
# depends
|
||||
find_package(SDL2 REQUIRED)
|
||||
set(SDL2_ALL_INCLUDE_DIRS ${SDL2_INCLUDE_DIR})
|
||||
set(SDL2_ALL_LIBRARIES ${SDL2_LIBRARY})
|
||||
set(SDL2_ALL_LIBRARIES SDL2::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)
|
||||
set(MINGW32_LIBRARY "mingw32" CACHE STRING "mingw32 library")
|
||||
@ -39,8 +45,7 @@ endif()
|
||||
|
||||
if(SDL2PP_WITH_IMAGE)
|
||||
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_IMAGE_LIBRARY})
|
||||
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2_image)
|
||||
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_image")
|
||||
else()
|
||||
message(STATUS "SDL2_image support disabled")
|
||||
@ -48,8 +53,7 @@ endif()
|
||||
|
||||
if(SDL2PP_WITH_TTF)
|
||||
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_TTF_LIBRARY})
|
||||
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2_ttf)
|
||||
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_ttf")
|
||||
else()
|
||||
message(STATUS "SDL2_ttf support disabled")
|
||||
@ -57,31 +61,25 @@ endif()
|
||||
|
||||
if(SDL2PP_WITH_MIXER)
|
||||
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_MIXER_LIBRARY})
|
||||
set(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} SDL2::SDL2_mixer)
|
||||
set(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_mixer")
|
||||
else()
|
||||
message(STATUS "SDL2_mixer support disabled")
|
||||
endif()
|
||||
|
||||
# compiler flags & definitions
|
||||
if(MSVC)
|
||||
set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3")
|
||||
else()
|
||||
set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wall -Wextra -pedantic")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wmissing-prototypes -Wtautological-compare -Wshorten-64-to-32")
|
||||
|
||||
# For adventurous
|
||||
#set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Weverything -Wno-c++98-compat -Wno-padded")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
list(REMOVE_DUPLICATES SDL2_ALL_INCLUDE_DIRS)
|
||||
|
||||
include_directories(BEFORE ${PROJECT_SOURCE_DIR})
|
||||
include_directories(SYSTEM ${SDL2_ALL_INCLUDE_DIRS})
|
||||
#if(MSVC)
|
||||
# set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} /W3")
|
||||
#else()
|
||||
# set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wall -Wextra -pedantic")
|
||||
#
|
||||
# if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
# set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Wmissing-prototypes -Wtautological-compare -Wshorten-64-to-32")
|
||||
#
|
||||
# # For adventurous
|
||||
# #set(SDL2PP_WARNINGS "${SDL2PP_WARNINGS} -Weverything -Wno-c++98-compat -Wno-padded")
|
||||
# endif()
|
||||
#endif()
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2PP_WARNINGS}")
|
||||
|
||||
@ -91,8 +89,6 @@ configure_file(
|
||||
SDL2pp/Config.hh
|
||||
)
|
||||
|
||||
include_directories(BEFORE ${PROJECT_BINARY_DIR})
|
||||
|
||||
# sources
|
||||
set(LIBRARY_SOURCES
|
||||
SDL2pp/AudioDevice.cc
|
||||
@ -178,26 +174,30 @@ endif()
|
||||
# targets
|
||||
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)
|
||||
# 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
|
||||
if(SDL2PP_WITH_EXAMPLES)
|
||||
add_subdirectory(examples)
|
||||
@ -219,55 +219,42 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
|
||||
)
|
||||
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(FILES
|
||||
${LIBRARY_HEADERS}
|
||||
${PROJECT_BINARY_DIR}/SDL2pp/Config.hh
|
||||
${PROJECT_BINARY_DIR}/SDL2pp/Export.hh
|
||||
DESTINATION include/SDL2pp
|
||||
)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
install(TARGETS SDL2pp
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
EXPORT SDL2pp-targets
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
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")
|
||||
else()
|
||||
# library
|
||||
add_library(SDL2pp STATIC ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
||||
generate_export_header(SDL2pp EXPORT_FILE_NAME SDL2pp/Export.hh)
|
||||
configure_file(sdl2pp.pc.in sdl2pp.pc @ONLY)
|
||||
install(
|
||||
FILES
|
||||
${PROJECT_BINARY_DIR}/sdl2pp.pc
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
|
||||
)
|
||||
|
||||
# provide variables to parent
|
||||
set(SDL2PP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${SDL2_ALL_INCLUDE_DIRS} PARENT_SCOPE)
|
||||
set(SDL2PP_LIBRARIES ${SDL2PP_EXTRA_LIBRARIES} SDL2pp ${SDL2_ALL_LIBRARIES} PARENT_SCOPE)
|
||||
|
||||
message(STATUS "libSDL2pp ${SDL2PP_VERSION} bundled build")
|
||||
configure_file(cmake/SDL2ppConfig.cmake.in cmake/SDL2ppConfig.cmake @ONLY)
|
||||
install(EXPORT SDL2pp-targets
|
||||
FILE SDL2ppTargets.cmake
|
||||
NAMESPACE SDL2pp::
|
||||
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()
|
||||
|
@ -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
|
||||
# This module defines:
|
||||
#
|
||||
# SDL2_IMAGE_INCLUDE_DIR
|
||||
# SDL2_IMAGE_LIBRARY
|
||||
# SDL2_IMAGE_FOUND
|
||||
#
|
||||
# SDL2::SDL2_image
|
||||
|
||||
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)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image REQUIRED_VARS SDL2_IMAGE_LIBRARY SDL2_IMAGE_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(SDL2_IMAGE_INCLUDE_DIR SDL2_IMAGE_LIBRARY)
|
||||
message(STATUS "Found SDL2_image: ${SDL2_IMAGE_LIBRARY}")
|
||||
else()
|
||||
message(FATAL_ERROR "Could not find SDL2_image")
|
||||
endif()
|
||||
|
@ -1,17 +1,14 @@
|
||||
# - Try to locate SDL2_mixer
|
||||
# This module defines:
|
||||
#
|
||||
# SDL2_MIXER_INCLUDE_DIR
|
||||
# SDL2_MIXER_LIBRARY
|
||||
# SDL2_MIXER_FOUND
|
||||
#
|
||||
# SDL2::SDL2_mixer
|
||||
|
||||
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)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_mixer REQUIRED_VARS SDL2_MIXER_LIBRARY SDL2_MIXER_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(SDL2_MIXER_INCLUDE_DIR SDL2_MIXER_LIBRARY)
|
||||
message(STATUS "Found SDL2_mixer: ${SDL2_MIXER_LIBRARY}")
|
||||
else()
|
||||
message(FATAL_ERROR "Could not find SDL2_mixer")
|
||||
endif()
|
||||
|
@ -1,17 +1,14 @@
|
||||
# - Try to locate SDL2_ttf
|
||||
# This module defines:
|
||||
#
|
||||
# SDL2_TTF_INCLUDE_DIR
|
||||
# SDL2_TTF_LIBRARY
|
||||
# SDL2_TTF_FOUND
|
||||
#
|
||||
# SDL2::SDL2_ttf
|
||||
|
||||
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)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_ttf REQUIRED_VARS SDL2_TTF_LIBRARY SDL2_TTF_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(SDL2_TTF_INCLUDE_DIR SDL2_TTF_LIBRARY)
|
||||
message(STATUS "Found SDL2_ttf: ${SDL2_TTF_LIBRARY}")
|
||||
else()
|
||||
message(FATAL_ERROR "Could not find SDL2_ttf")
|
||||
endif()
|
||||
|
@ -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})
|
||||
add_executable(${EXAMPLE} ${EXAMPLE}.cc)
|
||||
target_link_libraries(${EXAMPLE} ${SDL2PP_LIBRARIES})
|
||||
target_link_libraries(${EXAMPLE} SDL2pp::SDL2pp)
|
||||
endforeach()
|
||||
|
@ -2,10 +2,9 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
|
||||
|
||||
project(Test)
|
||||
|
||||
find_package(SDL2PP REQUIRED)
|
||||
find_package(SDL2pp REQUIRED)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
include_directories(${SDL2PP_INCLUDE_DIRS})
|
||||
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})
|
||||
configure_file(header_test.cc.in ${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()
|
||||
|
||||
foreach(TEST ${CLI_TESTS})
|
||||
add_executable(${TEST} ${TEST}.cc)
|
||||
target_link_libraries(${TEST} ${SDL2PP_LIBRARIES})
|
||||
target_link_libraries(${TEST} SDL2pp::SDL2pp)
|
||||
add_test(${TEST} ${TEST})
|
||||
endforeach()
|
||||
|
||||
foreach(TEST ${LIVE_TESTS})
|
||||
add_executable(${TEST} ${TEST}.cc)
|
||||
target_link_libraries(${TEST} ${SDL2PP_LIBRARIES})
|
||||
target_link_libraries(${TEST} SDL2pp::SDL2pp)
|
||||
if(SDL2PP_ENABLE_LIVE_TESTS)
|
||||
add_test(${TEST} ${TEST})
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user