From af27cd0099a6f72ad344a3376ffafacbd671c6c3 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Wed, 27 Apr 2022 23:37:39 +0300 Subject: [PATCH] Switch to modern CMake way of defining targets and installing exports --- .github/workflows/ci.yml | 4 +- CMakeLists.txt | 175 ++++++++++++++++------------------ FindSDL2PP.cmake.in | 28 ------ cmake/CheckCompile.cmake | 15 --- cmake/FindSDL2.cmake | 23 ----- cmake/FindSDL2_image.cmake | 25 +++-- cmake/FindSDL2_mixer.cmake | 25 +++-- cmake/FindSDL2_ttf.cmake | 25 +++-- cmake/Join.cmake | 23 ----- cmake/SDL2ppConfig.cmake.in | 15 +++ examples/CMakeLists.txt | 2 +- exttests/cmake/CMakeLists.txt | 5 +- tests/CMakeLists.txt | 6 +- 13 files changed, 137 insertions(+), 234 deletions(-) delete mode 100644 FindSDL2PP.cmake.in delete mode 100644 cmake/CheckCompile.cmake delete mode 100644 cmake/FindSDL2.cmake delete mode 100644 cmake/Join.cmake create mode 100644 cmake/SDL2ppConfig.cmake.in diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea9d7f8..39a301c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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') }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 743b18c..cad57d7 100644 --- a/CMakeLists.txt +++ b/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 + $ + $ + $ +) +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() diff --git a/FindSDL2PP.cmake.in b/FindSDL2PP.cmake.in deleted file mode 100644 index 344d2b2..0000000 --- a/FindSDL2PP.cmake.in +++ /dev/null @@ -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) diff --git a/cmake/CheckCompile.cmake b/cmake/CheckCompile.cmake deleted file mode 100644 index b20075a..0000000 --- a/cmake/CheckCompile.cmake +++ /dev/null @@ -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) diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake deleted file mode 100644 index ef86bf8..0000000 --- a/cmake/FindSDL2.cmake +++ /dev/null @@ -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) diff --git a/cmake/FindSDL2_image.cmake b/cmake/FindSDL2_image.cmake index 88adb3f..f34a54e 100644 --- a/cmake/FindSDL2_image.cmake +++ b/cmake/FindSDL2_image.cmake @@ -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() diff --git a/cmake/FindSDL2_mixer.cmake b/cmake/FindSDL2_mixer.cmake index ef5748b..6df3529 100644 --- a/cmake/FindSDL2_mixer.cmake +++ b/cmake/FindSDL2_mixer.cmake @@ -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() diff --git a/cmake/FindSDL2_ttf.cmake b/cmake/FindSDL2_ttf.cmake index b480d55..c2c6f17 100644 --- a/cmake/FindSDL2_ttf.cmake +++ b/cmake/FindSDL2_ttf.cmake @@ -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() diff --git a/cmake/Join.cmake b/cmake/Join.cmake deleted file mode 100644 index a809557..0000000 --- a/cmake/Join.cmake +++ /dev/null @@ -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() diff --git a/cmake/SDL2ppConfig.cmake.in b/cmake/SDL2ppConfig.cmake.in new file mode 100644 index 0000000..0d93e15 --- /dev/null +++ b/cmake/SDL2ppConfig.cmake.in @@ -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") diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 34731ac..68a2c97 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -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() diff --git a/exttests/cmake/CMakeLists.txt b/exttests/cmake/CMakeLists.txt index faad7ab..dbaff39 100644 --- a/exttests/cmake/CMakeLists.txt +++ b/exttests/cmake/CMakeLists.txt @@ -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) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2ac346d..7d835f0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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()