mirror of
https://github.com/taglib/taglib.git
synced 2025-05-25 12:10:26 -04:00
Export CMake configuration
This will install a <libdir>/cmake/taglib/ folder with CMake configuration, so that users can simply use find_package(TagLib) add_executable(myproject ...) target_link_libraries(myproject TagLib::tag)
This commit is contained in:
parent
16326b2479
commit
faddc4aa06
@ -8,6 +8,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
||||
include(CTest)
|
||||
include(FeatureSummary)
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||
if(APPLE)
|
||||
@ -108,6 +109,10 @@ if(WITH_ZLIB)
|
||||
set(HAVE_ZLIB ${ZLIB_FOUND})
|
||||
if(ZLIB_FOUND)
|
||||
set(ZLIB_LIBRARIES_FLAGS -lz)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
# When linking TagLib statically, zlib has to be linked explicitly.
|
||||
set(ZLIB_INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -20,7 +20,11 @@ set(tag_c_HDRS tag_c.h)
|
||||
|
||||
add_library(tag_c tag_c.cpp ${tag_c_HDRS})
|
||||
|
||||
target_link_libraries(tag_c tag)
|
||||
target_include_directories(tag_c INTERFACE
|
||||
$<INSTALL_INTERFACE:include/taglib>
|
||||
)
|
||||
|
||||
target_link_libraries(tag_c PRIVATE tag)
|
||||
set_target_properties(tag_c PROPERTIES
|
||||
PUBLIC_HEADER "${tag_c_HDRS}"
|
||||
DEFINE_SYMBOL MAKE_TAGLIB_LIB
|
||||
@ -60,6 +64,7 @@ set_target_properties(tag_c PROPERTIES
|
||||
INSTALL_NAME_DIR ${CMAKE_INSTALL_FULL_LIBDIR}
|
||||
)
|
||||
install(TARGETS tag_c
|
||||
EXPORT taglibTargets
|
||||
FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
|
12
taglib-config.cmake.in
Normal file
12
taglib-config.cmake.in
Normal file
@ -0,0 +1,12 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/taglib-targets.cmake")
|
||||
|
||||
set(TAGLIB_FOUND ${TagLib_FOUND})
|
||||
set(TAGLIB_VERSION ${TagLib_VERSION})
|
||||
|
||||
check_required_components("TagLib")
|
||||
|
||||
if(NOT TARGET TagLib::TagLib)
|
||||
add_library(TagLib::TagLib ALIAS TagLib::tag)
|
||||
endif()
|
@ -342,15 +342,22 @@ set(tag_LIB_SRCS
|
||||
|
||||
add_library(tag ${tag_LIB_SRCS} ${tag_HDRS})
|
||||
|
||||
target_link_libraries(tag $<$<TARGET_EXISTS:utf8::cpp>:utf8::cpp>)
|
||||
target_link_libraries(tag $<$<TARGET_EXISTS:ZLIB::ZLIB>:ZLIB::ZLIB>)
|
||||
target_include_directories(tag INTERFACE
|
||||
$<INSTALL_INTERFACE:include>
|
||||
$<INSTALL_INTERFACE:include/taglib>
|
||||
)
|
||||
|
||||
target_link_libraries(tag
|
||||
PRIVATE $<$<TARGET_EXISTS:utf8::cpp>:utf8::cpp>
|
||||
$<$<TARGET_EXISTS:ZLIB::ZLIB>:ZLIB::ZLIB>
|
||||
)
|
||||
|
||||
set_target_properties(tag PROPERTIES
|
||||
VERSION ${TAGLIB_SOVERSION_MAJOR}.${TAGLIB_SOVERSION_MINOR}.${TAGLIB_SOVERSION_PATCH}
|
||||
SOVERSION ${TAGLIB_SOVERSION_MAJOR}
|
||||
INSTALL_NAME_DIR ${CMAKE_INSTALL_FULL_LIBDIR}
|
||||
DEFINE_SYMBOL MAKE_TAGLIB_LIB
|
||||
LINK_INTERFACE_LIBRARIES ""
|
||||
INTERFACE_LINK_LIBRARIES "${ZLIB_INTERFACE_LINK_LIBRARIES}"
|
||||
PUBLIC_HEADER "${tag_HDRS}"
|
||||
)
|
||||
if(VISIBILITY_HIDDEN)
|
||||
@ -368,9 +375,33 @@ if(BUILD_FRAMEWORK)
|
||||
endif()
|
||||
|
||||
install(TARGETS tag
|
||||
EXPORT taglibTargets
|
||||
FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/taglib
|
||||
)
|
||||
|
||||
configure_package_config_file(
|
||||
"${PROJECT_SOURCE_DIR}/taglib-config.cmake.in"
|
||||
"${PROJECT_BINARY_DIR}/taglib-config.cmake"
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/taglib
|
||||
)
|
||||
|
||||
write_basic_package_version_file(
|
||||
"${PROJECT_BINARY_DIR}/taglib-config-version.cmake"
|
||||
VERSION "${TAGLIB_LIB_VERSION_STRING}"
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
|
||||
install(EXPORT taglibTargets
|
||||
FILE taglib-targets.cmake
|
||||
NAMESPACE TagLib::
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/taglib
|
||||
)
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}/taglib-config.cmake"
|
||||
"${PROJECT_BINARY_DIR}/taglib-config-version.cmake"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/taglib
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user