mirror of
https://github.com/marzer/tomlplusplus.git
synced 2024-09-03 21:49:07 +00:00
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>
47 lines
1.1 KiB
CMake
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()
|