2
0
mirror of https://github.com/boostorg/nowide.git synced 2026-02-22 03:22:32 +00:00
Files
nowide/cmake/BoostInstall.cmake
2019-12-27 14:26:31 +01:00

58 lines
1.9 KiB
CMake

include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
# Install all passed libraries including *Config.cmake and *ConfigVersion.cmake
# Requires a file Config.cmake.in the projects source dir
# Arguments:
# - TARGETS: List of targets to install
function(boost_install)
cmake_parse_arguments(PARSE_ARGV 0 ARG "" "LAYOUT" "TARGETS")
if(ARG_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Invalid argument(s): ${ARG_UNPARSED_ARGUMENTS}")
endif()
if(NOT ARG_LAYOUT)
set(ARG_LAYOUT system)
endif()
if(ARG_LAYOUT STREQUAL "versioned")
set(install_includedir ${CMAKE_INSTALL_INCLUDEDIR}/boost-${PROJECT_VERSION_MAJOR}_${PROJECT_VERSION_MINOR})
set(configFolder ${PROJECT_NAME}-${PROJECT_VERSION})
elseif(ARG_LAYOUT STREQUAL "system")
set(install_includedir ${CMAKE_INSTALL_INCLUDEDIR})
set(configFolder ${PROJECT_NAME})
endif()
foreach(tgt IN LISTS ARG_TARGETS)
target_include_directories(${tgt} INTERFACE $<INSTALL_INTERFACE:${install_includedir}>)
endforeach()
install(TARGETS ${ARG_TARGETS}
EXPORT ${PROJECT_NAME}Targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(DIRECTORY include/ DESTINATION ${install_includedir})
set(configFile ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake)
set(versionFile ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake)
set(configInstallDestination lib/cmake/${configFolder})
configure_package_config_file(
${PROJECT_SOURCE_DIR}/Config.cmake.in
${configFile}
INSTALL_DESTINATION ${configInstallDestination}
)
write_basic_package_version_file(
${versionFile}
COMPATIBILITY SameMajorVersion
)
install(FILES ${configFile} ${versionFile} DESTINATION ${configInstallDestination})
install(
EXPORT ${PROJECT_NAME}Targets
NAMESPACE "Boost::"
DESTINATION ${configInstallDestination}
)
endfunction()