tomlplusplus/cmake/install-rules.cmake
friendlyanon a9262c672f
Modernize the CMake build files (#102)
List of things that this commit brings:
* Makes the project `FetchContent` ready
  This is achieved by conditionally executing code that is only useful
  for a consumer of the project, such as examples.
* Componentize the install rules
  Because this is a header-only library, its install rules should be
  categorized in a dev component (think foo-dev packages in apt). By
  assigning all install rules to a component, the project no longer
  clobbers the global component when vendored (see the previous point).
* Provide an interface similar to the install interface when vendored
  This is achieved by adding SYSTEM to the include directories
  conditionally and only providing targets that are actually needed.
* Make the project architecture independant
  This is achieved by setting the ARCH_INDEPENDENT argument when
  generating the version config file, which is available since CMake
  3.14. This feature is intended to be used for header-only libraries.
* Misc changes for trivial packaging
  The install rules are written in a way that allows package maintainers
  to trivially package the project.

Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
2021-05-20 22:03:35 +03:00

47 lines
1.1 KiB
CMake

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
install(
DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
COMPONENT tomlplusplus_Development
)
install(
TARGETS tomlplusplus_tomlplusplus
EXPORT tomlplusplusTargets
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
write_basic_package_version_file(
tomlplusplusConfigVersion.cmake
COMPATIBILITY SameMajorVersion
ARCH_INDEPENDENT
)
set(
tomlplusplus_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/tomlplusplus"
CACHE STRING "CMake package config location relative to the install prefix"
)
mark_as_advanced(tomlplusplus_INSTALL_CMAKEDIR)
install(
FILES
"${PROJECT_SOURCE_DIR}/cmake/tomlplusplusConfig.cmake"
"${PROJECT_BINARY_DIR}/tomlplusplusConfigVersion.cmake"
DESTINATION "${tomlplusplus_INSTALL_CMAKEDIR}"
COMPONENT tomlplusplus_Development
)
install(
EXPORT tomlplusplusTargets
NAMESPACE tomlplusplus::
DESTINATION "${tomlplusplus_INSTALL_CMAKEDIR}"
COMPONENT tomlplusplus_Development
)
if(PROJECT_IS_TOP_LEVEL)
include(CPack)
endif()