a9262c672f
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>
19 lines
674 B
CMake
19 lines
674 B
CMake
# ---- Warning guard ----
|
|
|
|
# target_include_directories with the SYSTEM modifier will request the compiler
|
|
# to omit warnings from the provided paths, if the compiler supports that
|
|
# This is to provide a user experience similar to find_package when
|
|
# add_subdirectory or FetchContent is used to consume this project
|
|
set(tomlplusplus_warning_guard "")
|
|
if(NOT PROJECT_IS_TOP_LEVEL)
|
|
option(
|
|
tomlplusplus_INCLUDES_WITH_SYSTEM
|
|
"Use SYSTEM modifier for tomlplusplus's includes, disabling warnings"
|
|
ON
|
|
)
|
|
mark_as_advanced(tomlplusplus_INCLUDES_WITH_SYSTEM)
|
|
if(tomlplusplus_INCLUDES_WITH_SYSTEM)
|
|
set(tomlplusplus_warning_guard SYSTEM)
|
|
endif()
|
|
endif()
|