Re: [PATCH] Export libraries with CMake

Sam Lantinga <[email protected]> Fri, 27 Jan 2017 18:01:10 -0800
Newsgroups gmane.comp.lib.sdl
Message-ID <CACC3sbH9VwK3OzyiFzNZCWhuV9skmaVpw+F-G0wHQKvErmSPbQ@mail.gmail.com>
Lots of mail programs mangle patches included inline. Can you please submit
a bug report and attach it there?
http://bugzilla.libsdl.org/

Thanks!

On Fri, Jan 27, 2017 at 2:40 AM, David Demelier <[email protected]>
wrote:

> # HG changeset patch
> # User David Demelier <[email protected]>
> # Date 1485512982 -3600
> #      Fri Jan 27 11:29:42 2017 +0100
> # Node ID 7c72c6e972816750131cde1324fe1ac1b1bc0e0d
> # Parent  ca523d8f1af2a197289c330833a8c602bf1c55a9
> Export SDL2 libraries through CMake configuration packages
>
> This patch export the SDL2 libraries using CMake configuration packages as
> defined in the cmake-packages guide [0].
>
> The purpose of that configuration packages is to provide convenient and
> much
> safer packages than own made. They also offer imported targets which add
> include directories, compile definition, transient libraries and such.
>
> Adding that support will help developers importing SDL2 in their project
> and
> make future use of CMake in SDL_net, mixer, ttf, rtf and image.
>
> Sample project that compiles out of the box on Linux:
>
> cmake_minimum_required(VERSION 3.7)
> project(sample)
> find_package(SDL2 2.0.5 REQUIRED)
> add_executable(main main.c)
> target_link_libraries(main SDL2::SDL2)
>
> [0]: https://cmake.org/cmake/help/v3.7/manual/cmake-packages.7.ht
> ml#creating-packages
>
> diff -r ca523d8f1af2 -r 7c72c6e97281 CMakeLists.txt
> --- a/CMakeLists.txt    Wed Jan 25 22:24:54 2017 -0800
> +++ b/CMakeLists.txt    Fri Jan 27 11:29:42 2017 +0100
> @@ -1585,6 +1585,7 @@
>    endif()
>    set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS})
>    target_link_libraries(SDL2 ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
> +  target_include_directories(SDL2 PUBLIC $<INSTALL_INTERFACE:include/SD
> L2>)
>  endif()
>
>  if(SDL_STATIC)
> @@ -1601,14 +1602,43 @@
>    # libraries - do we need to consider this?
>    set(_INSTALL_LIBS "SDL2-static" ${_INSTALL_LIBS})
>    target_link_libraries(SDL2-static ${EXTRA_LIBS} ${EXTRA_LDFLAGS})
> +  target_include_directories(SDL2-static PUBLIC
> $<INSTALL_INTERFACE:include/SDL2>)
>  endif()
>
>  ##### Installation targets #####
> -install(TARGETS ${_INSTALL_LIBS}
> +install(TARGETS ${_INSTALL_LIBS} EXPORT SDL2Targets
>    LIBRARY DESTINATION "lib${LIB_SUFFIX}"
>    ARCHIVE DESTINATION "lib${LIB_SUFFIX}"
>    RUNTIME DESTINATION bin)
>
> +##### Export files #####
> +if (APPLE)
> +  set(PKG_PREFIX "SDL2.framework/Resources")
> +elseif (WINDOWS)
> +  set(PKG_PREFIX "cmake/SDL2")
> +else ()
> +  set(PKG_PREFIX "lib/cmake/SDL2")
> +endif ()
> +
> +include(CMakePackageConfigHelpers)
> +write_basic_package_version_file("${CMAKE_BINARY_DIR}/SDL2C
> onfigVersion.cmake"
> +  VERSION ${SDL_VERSION}
> +  COMPATIBILITY AnyNewerVersion
> +)
> +
> +install(EXPORT SDL2Targets
> +  FILE SDL2Targets.cmake
> +  NAMESPACE SDL2::
> +  DESTINATION ${PKG_PREFIX}
> +)
> +install(
> +  FILES
> +    ${CMAKE_SOURCE_DIR}/SDL2Config.cmake
> +    ${CMAKE_BINARY_DIR}/SDL2ConfigVersion.cmake
> +  DESTINATION ${PKG_PREFIX}
> +  COMPONENT Devel
> +)
> +
>  file(GLOB INCLUDE_FILES ${SDL2_SOURCE_DIR}/include/*.h)
>  file(GLOB BIN_INCLUDE_FILES ${SDL2_BINARY_DIR}/include/*.h)
>  foreach(_FNAME ${BIN_INCLUDE_FILES})
> diff -r ca523d8f1af2 -r 7c72c6e97281 SDL2Config.cmake
> --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
> +++ b/SDL2Config.cmake  Fri Jan 27 11:29:42 2017 +0100
> @@ -0,0 +1,1 @@
> +include("${CMAKE_CURRENT_LIST_DIR}/SDL2Targets.cmake")
> _______________________________________________
> SDL mailing list
> [email protected]
> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
>

_______________________________________________
SDL mailing list
[email protected]
http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org