# This CMakeLists.txt is part of the subproject B (ExternalProject_Add). cmake_minimum_required(VERSION 3.20) project(shared_lib_project VERSION 2.3.4 LANGUAGES CXX) include(GNUInstallDirs) include(GenerateExportHeader) add_library(the_shared_lib SHARED "include/shared_lib.h" "src/shared_lib.cpp" ) generate_export_header(the_shared_lib BASE_NAME shared_lib EXPORT_FILE_NAME include/shared_lib_export.h ) set_target_properties(the_shared_lib PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION}" ) target_include_directories(the_shared_lib PUBLIC $ $ $ ) install( DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/" "${CMAKE_CURRENT_BINARY_DIR}/include/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" ) install( TARGETS the_shared_lib EXPORT main ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" ) set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") include(CMakePackageConfigHelpers) configure_package_config_file( "cmake/PackageConfig.cmake.in" "${PROJECT_NAME}Config.cmake" INSTALL_DESTINATION "${INSTALL_CMAKE_DIR}" PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR ) write_basic_package_version_file("${PROJECT_NAME}Version.cmake" VERSION "${PROJECT_VERSION}" COMPATIBILITY SameMajorVersion ) install( EXPORT main FILE "${PROJECT_NAME}Targets.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Version.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )