diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ef6e8a..d4e03a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,16 +3,16 @@ cmake_minimum_required(VERSION 3.4) # enable MSVC_RUNTIME_LIBRARY target property # see https://cmake.org/cmake/help/latest/policy/CMP0091.html -if(POLICY CMP0091) - cmake_policy(SET CMP0091 NEW) -endif() +if (POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif () project(YAML_CPP VERSION 0.7.0 LANGUAGES CXX) set(YAML_CPP_MAIN_PROJECT OFF) -if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) - set(YAML_CPP_MAIN_PROJECT ON) -endif() +if (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + set(YAML_CPP_MAIN_PROJECT ON) +endif () include(CMakePackageConfigHelpers) include(CMakeDependentOption) @@ -26,23 +26,23 @@ option(YAML_BUILD_SHARED_LIBS "Build yaml-cpp shared library" ${BUILD_SHARED_LIB option(YAML_CPP_INSTALL "Enable generation of yaml-cpp install targets" ${YAML_CPP_MAIN_PROJECT}) option(YAML_CPP_FORMAT_SOURCE "Format source" ON) cmake_dependent_option(YAML_CPP_BUILD_TESTS - "Enable yaml-cpp tests" OFF - "BUILD_TESTING;YAML_CPP_MAIN_PROJECT" OFF) + "Enable yaml-cpp tests" OFF + "BUILD_TESTING;YAML_CPP_MAIN_PROJECT" OFF) cmake_dependent_option(YAML_MSVC_SHARED_RT - "MSVC: Build yaml-cpp with shared runtime libs (/MD)" ON - "CMAKE_SYSTEM_NAME MATCHES Windows" OFF) - + "MSVC: Build yaml-cpp with shared runtime libs (/MD)" ON + "CMAKE_SYSTEM_NAME MATCHES Windows" OFF) + if (YAML_CPP_FORMAT_SOURCE) find_program(YAML_CPP_CLANG_FORMAT_EXE NAMES clang-format) -endif() +endif () if (YAML_BUILD_SHARED_LIBS) - set(yaml-cpp-type SHARED) - set(yaml-cpp-label-postfix "shared") -else() - set(yaml-cpp-type STATIC) - set(yaml-cpp-label-postfix "static") -endif() + set(yaml-cpp-type SHARED) + set(yaml-cpp-label-postfix "shared") +else () + set(yaml-cpp-type STATIC) + set(yaml-cpp-label-postfix "static") +endif () set(build-shared $) set(build-windows-dll $,${build-shared}>) @@ -50,16 +50,16 @@ set(not-msvc $>) set(msvc-shared_rt $) if (NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) - set(CMAKE_MSVC_RUNTIME_LIBRARY - MultiThreaded$<$:Debug>$<${msvc-shared_rt}:DLL>) -endif() + set(CMAKE_MSVC_RUNTIME_LIBRARY + MultiThreaded$<$:Debug>$<${msvc-shared_rt}:DLL>) +endif () set(contrib-pattern "src/contrib/*.cpp") set(src-pattern "src/*.cpp") if (CMAKE_VERSION VERSION_GREATER 3.12) - list(INSERT contrib-pattern 0 CONFIGURE_DEPENDS) - list(INSERT src-pattern 0 CONFIGURE_DEPENDS) -endif() + list(INSERT contrib-pattern 0 CONFIGURE_DEPENDS) + list(INSERT src-pattern 0 CONFIGURE_DEPENDS) +endif () file(GLOB yaml-cpp-contrib-sources ${contrib-pattern}) file(GLOB yaml-cpp-sources ${src-pattern}) @@ -78,129 +78,124 @@ add_library(yaml-cpp ${yaml-cpp-type} "") add_library(yaml-cpp::yaml-cpp ALIAS yaml-cpp) set_property(TARGET yaml-cpp - PROPERTY - MSVC_RUNTIME_LIBRARY ${CMAKE_MSVC_RUNTIME_LIBRARY}) + PROPERTY + MSVC_RUNTIME_LIBRARY ${CMAKE_MSVC_RUNTIME_LIBRARY}) set_property(TARGET yaml-cpp - PROPERTY - CXX_STANDARD_REQUIRED ON) + PROPERTY + CXX_STANDARD_REQUIRED ON) if (NOT YAML_BUILD_SHARED_LIBS) - set_property(TARGET yaml-cpp PROPERTY POSITION_INDEPENDENT_CODE ON) -endif() + set_property(TARGET yaml-cpp PROPERTY POSITION_INDEPENDENT_CODE ON) +endif () target_include_directories(yaml-cpp - PUBLIC - $ - $ - PRIVATE - $) + PUBLIC + $ + $ + PRIVATE + $) if (NOT DEFINED CMAKE_CXX_STANDARD) - set_target_properties(yaml-cpp - PROPERTIES - CXX_STANDARD 11) -endif() + set_target_properties(yaml-cpp + PROPERTIES + CXX_STANDARD 11) +endif () -if(YAML_CPP_MAIN_PROJECT) - target_compile_options(yaml-cpp - PRIVATE - $<${not-msvc}:-Wall -Wextra -Wshadow -Weffc++ -Wno-long-long> - $<${not-msvc}:-pedantic -pedantic-errors>) -endif() +if (YAML_CPP_MAIN_PROJECT) + target_compile_options(yaml-cpp + PRIVATE + $<${not-msvc}:-Wall -Wextra -Wshadow -Weffc++ -Wno-long-long> + $<${not-msvc}:-pedantic -pedantic-errors>) +endif () target_compile_options(yaml-cpp - PRIVATE - $<$:-MTd> - $<$:-MT> - $<$:-MDd> - $<$:-MD> + PRIVATE + $<$:-MTd> + $<$:-MT> + $<$:-MDd> + $<$:-MD> - # /wd4127 = disable warning C4127 "conditional expression is constant" - # http://msdn.microsoft.com/en-us/library/6t66728h.aspx - # /wd4355 = disable warning C4355 "'this' : used in base member initializer list - # http://msdn.microsoft.com/en-us/library/3c594ae3.aspx - $<$:/W3 /wd4127 /wd4355>) + # /wd4127 = disable warning C4127 "conditional expression is constant" + # http://msdn.microsoft.com/en-us/library/6t66728h.aspx + # /wd4355 = disable warning C4355 "'this' : used in base member initializer list + # http://msdn.microsoft.com/en-us/library/3c594ae3.aspx + $<$:/W3 /wd4127 /wd4355>) target_compile_definitions(yaml-cpp - PUBLIC - $<$>:YAML_CPP_STATIC_DEFINE> - PRIVATE - $<${build-windows-dll}:${PROJECT_NAME}_DLL> - $<$>:YAML_CPP_NO_CONTRIB>) + PUBLIC + $<$>:YAML_CPP_STATIC_DEFINE> + PRIVATE + $<${build-windows-dll}:${PROJECT_NAME}_DLL> + $<$>:YAML_CPP_NO_CONTRIB>) target_sources(yaml-cpp - PRIVATE - $<$:${yaml-cpp-contrib-sources}> - ${yaml-cpp-sources}) - -if (NOT DEFINED CMAKE_DEBUG_POSTFIX) - set(CMAKE_DEBUG_POSTFIX "d") -endif() + PRIVATE + $<$:${yaml-cpp-contrib-sources}> + ${yaml-cpp-sources}) set_target_properties(yaml-cpp PROPERTIES - VERSION "${PROJECT_VERSION}" - SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" - PROJECT_LABEL "yaml-cpp ${yaml-cpp-label-postfix}" - DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}") + VERSION "${PROJECT_VERSION}" + SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" + PROJECT_LABEL "yaml-cpp ${yaml-cpp-label-postfix}") set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/yaml-cpp") set(EXPORT_TARGETS yaml-cpp) configure_package_config_file( - "${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in" - "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" - INSTALL_DESTINATION "${CONFIG_EXPORT_DIR}" - PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR CONFIG_EXPORT_DIR YAML_BUILD_SHARED_LIBS) + "${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in" + "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" + INSTALL_DESTINATION "${CONFIG_EXPORT_DIR}" + PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR CONFIG_EXPORT_DIR YAML_BUILD_SHARED_LIBS) unset(EXPORT_TARGETS) write_basic_package_version_file( - "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" - COMPATIBILITY AnyNewerVersion) + "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" + COMPATIBILITY AnyNewerVersion) configure_file(yaml-cpp.pc.in yaml-cpp.pc @ONLY) if (YAML_CPP_INSTALL) - install(TARGETS yaml-cpp - EXPORT yaml-cpp-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - FILES_MATCHING PATTERN "*.h") - install(EXPORT yaml-cpp-targets - DESTINATION "${CONFIG_EXPORT_DIR}") - install(FILES - "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" - "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" - DESTINATION "${CONFIG_EXPORT_DIR}") - install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -endif() + install(TARGETS yaml-cpp + EXPORT yaml-cpp-targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN "*.h") + install(EXPORT yaml-cpp-targets + DESTINATION "${CONFIG_EXPORT_DIR}") + install(FILES + "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" + "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" + DESTINATION "${CONFIG_EXPORT_DIR}") + install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +endif () unset(CONFIG_EXPORT_DIR) -if(YAML_CPP_BUILD_TESTS) - add_subdirectory(test) -endif() +if (YAML_CPP_BUILD_TESTS) + add_subdirectory(test) +endif () -if(YAML_CPP_BUILD_TOOLS) - add_subdirectory(util) -endif() +if (YAML_CPP_BUILD_TOOLS) + add_subdirectory(util) +endif () if (YAML_CPP_FORMAT_SOURCE AND YAML_CPP_CLANG_FORMAT_EXE) - add_custom_target(format - COMMAND clang-format --style=file -i $ - COMMAND_EXPAND_LISTS - COMMENT "Running clang-format" - VERBATIM) -endif() + add_custom_target(format + COMMAND clang-format --style=file -i $ + COMMAND_EXPAND_LISTS + COMMENT "Running clang-format" + VERBATIM) +endif () # uninstall target -if(NOT TARGET uninstall) - configure_file( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) +if (NOT TARGET uninstall) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) - add_custom_target(uninstall - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) -endif() + add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) +endif ()