Switch to modern CMake way of defining targets and installing exports

This commit is contained in:
Dmitry Marakasov 2022-04-27 23:37:39 +03:00
parent 87d5e9f930
commit af27cd0099
13 changed files with 137 additions and 234 deletions

View File

@ -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') }}

View File

@ -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()

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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()

View File

@ -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()

View File

@ -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()

View 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")

View File

@ -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()

View File

@ -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)

View File

@ -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()