From 6eaeff87e0462227c3e81ba983b0a21cf5c5d28d Mon Sep 17 00:00:00 2001 From: SIhrke <30534391+SIhrke@users.noreply.github.com> Date: Wed, 20 Jul 2022 09:59:09 +0200 Subject: [PATCH] Added CMake Target Export to the Installation Step for easy Integration of BGSLibrary in user projects. (#171) usage: cmake_minimum_required(VERSION 3.5) find_package(BGSLibrary 3.0.0 REQUIRED) add_executable(BackgroundSubtractionTester main.cpp) target_link_libraries(BackgroundSubtractionTester BGSLibrary::BGSLibrary) Co-authored-by: IVI\ihrke <stephan.ihrke@ivi.fraunhofer.de> --- CMakeLists.txt | 40 ++++++++++++++++++++++++- cmake-modules/BGSLibraryConfig.cmake.in | 13 ++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 cmake-modules/BGSLibraryConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 209c02b..0fce603 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.1) -project(bgslibrary) +project(bgslibrary VERSION 3.0.0) include(CheckCXXCompilerFlag) @@ -296,14 +296,52 @@ if(UNIX AND BGS_PYTHON_SUPPORT) endif() if(NOT BGS_PYTHON_ONLY) + include(GNUInstallDirs) + set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/BGSLibrary) + target_include_directories(bgslibrary_core + PUBLIC + $<INSTALL_INTERFACE:include>) + + install(TARGETS bgslibrary_core bgslibrary + EXPORT bgslibrary_core-targets RUNTIME DESTINATION bin COMPONENT app LIBRARY DESTINATION lib COMPONENT runtime ARCHIVE DESTINATION lib COMPONENT runtime #PUBLIC_HEADER DESTINATION include/bgslibrary COMPONENT dev FRAMEWORK DESTINATION "/Library/Frameworks" ) + set_target_properties(bgslibrary_core PROPERTIES EXPORT_NAME BGSLibrary) + + install(DIRECTORY src/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install(EXPORT bgslibrary_core-targets + FILE + BGSLibraryTargets.cmake + NAMESPACE + BGSLibrary:: + DESTINATION + ${INSTALL_CONFIGDIR} + ) + + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/BGSLibraryConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + + configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake-modules/BGSLibraryConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/BGSLibraryConfig.cmake + INSTALL_DESTINATION ${INSTALL_CONFIGDIR} + ) + + install(FILES + ${CMAKE_CURRENT_LIST_DIR}/cmake-modules/FindOpenCV.cmake + ${CMAKE_CURRENT_BINARY_DIR}/BGSLibraryConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/BGSLibraryConfigVersion.cmake + DESTINATION ${INSTALL_CONFIGDIR} + ) if(UNIX) # to avoid: error while loading shared libraries: libbgslibrary_core.so diff --git a/cmake-modules/BGSLibraryConfig.cmake.in b/cmake-modules/BGSLibraryConfig.cmake.in new file mode 100644 index 0000000..bc1f73f --- /dev/null +++ b/cmake-modules/BGSLibraryConfig.cmake.in @@ -0,0 +1,13 @@ +get_filename_component(BGSLibrary_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +include(CMakeFindDependencyMacro) + +list(APPEND CMAKE_MODULE_PATH ${BGSLibrary_CMAKE_DIR}) + +find_package(OpenCV 2.3.1 REQUIRED ) +list(REMOVE_AT CMAKE_MODULE_PATH -1) + +if(NOT TARGET BGSLibrary::BGSLibrary) + include("${BGSLibrary_CMAKE_DIR}/BGSLibraryTargets.cmake") +endif() + +set(BGSLibrary_LIBRARIES BGSLibrary::BGSLibrary) \ No newline at end of file -- GitLab