build: Add a CMake config file compatible with the FindPNG module

Co-authored-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
This commit is contained in:
Benjamin Buch 2024-03-01 13:14:17 +01:00 committed by Cosmin Truta
parent 53a7f4e320
commit 0e204b7364
3 changed files with 40 additions and 0 deletions

View File

@ -1129,6 +1129,30 @@ if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL)
FILE libpng${PNGLIB_ABI_VERSION}.cmake) FILE libpng${PNGLIB_ABI_VERSION}.cmake)
endif() endif()
# Create a CMake Config File that can be used via find_package(PNG CONFIG)
if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL)
install(TARGETS ${PNG_LIBRARY_TARGETS}
EXPORT PNGTargets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
include(CMakePackageConfigHelpers)
write_basic_package_version_file(PNGConfigVersion.cmake
VERSION ${PNGLIB_VERSION}
COMPATIBILITY SameMinorVersion)
install(EXPORT PNGTargets
FILE PNGTargets.cmake
NAMESPACE PNG::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
endif()
# TODO: Create MSVC import lib for MinGW-compiled shared lib. # TODO: Create MSVC import lib for MinGW-compiled shared lib.
# pexports libpng.dll > libpng.def # pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86 # lib /def:libpng.def /machine:x86

View File

@ -0,0 +1,15 @@
include(CMakeFindDependencyMacro)
find_dependency(ZLIB REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/PNGTargets.cmake")
if(NOT TARGET PNG::PNG)
if(TARGET PNG::png_shared)
add_library(PNG::PNG INTERFACE IMPORTED)
target_link_libraries(PNG::PNG INTERFACE PNG::png_shared)
elseif(TARGET PNG::png_static)
add_library(PNG::PNG INTERFACE IMPORTED)
target_link_libraries(PNG::PNG INTERFACE PNG::png_static)
endif()
endif()

View File

@ -20,6 +20,7 @@ File List
CMakeLists.txt ==> The main CMake lists file CMakeLists.txt ==> The main CMake lists file
scripts/cmake/AUTHORS.md ==> The Authors file scripts/cmake/AUTHORS.md ==> The Authors file
scripts/cmake/README.md ==> This file scripts/cmake/README.md ==> This file
scripts/cmake/PNGConfig.cmake ==> Config file for FindPNG
scripts/cmake/genchk.cmake.in ==> Template for genchk.cmake scripts/cmake/genchk.cmake.in ==> Template for genchk.cmake
scripts/cmake/genout.cmake.in ==> Template for genout.cmake scripts/cmake/genout.cmake.in ==> Template for genout.cmake
scripts/cmake/gensrc.cmake.in ==> Template for gensrc.cmake scripts/cmake/gensrc.cmake.in ==> Template for gensrc.cmake