Commit d638508d authored by Andy Maloney's avatar Andy Maloney Committed by Jesse Beder
Browse files

Set C++ standard options in CMake per-target instead of globally (#735)

Setting CMAKE_CXX_STANDARD and CMAKE_CXX_STANDARD_REQUIRED directly is problematic when including yaml-cpp as a subproject.

The proper way is to set these per-target.
parent 90350662
...@@ -26,10 +26,6 @@ option(YAML_CPP_INSTALL "Enable generation of install target" ON) ...@@ -26,10 +26,6 @@ option(YAML_CPP_INSTALL "Enable generation of install target" ON)
# http://www.cmake.org/cmake/help/cmake2.6docs.html#command:add_library # http://www.cmake.org/cmake/help/cmake2.6docs.html#command:add_library
option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
# Set minimum C++ to 2011 standards
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# --> Apple # --> Apple
option(APPLE_UNIVERSAL_BIN "Apple: Build universal binary" OFF) option(APPLE_UNIVERSAL_BIN "Apple: Build universal binary" OFF)
...@@ -261,6 +257,11 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.12) ...@@ -261,6 +257,11 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
PRIVATE $<BUILD_INTERFACE:${YAML_CPP_SOURCE_DIR}/src>) PRIVATE $<BUILD_INTERFACE:${YAML_CPP_SOURCE_DIR}/src>)
endif() endif()
set_target_properties(yaml-cpp PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
set_target_properties(yaml-cpp PROPERTIES set_target_properties(yaml-cpp PROPERTIES
COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags}" COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags}"
) )
......
...@@ -51,6 +51,11 @@ add_executable(run-tests ...@@ -51,6 +51,11 @@ add_executable(run-tests
${test_headers} ${test_headers}
) )
set_target_properties(run-tests PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
add_dependencies(run-tests googletest_project) add_dependencies(run-tests googletest_project)
set_target_properties(run-tests PROPERTIES set_target_properties(run-tests PROPERTIES
......
...@@ -2,13 +2,25 @@ cmake_minimum_required(VERSION 3.5) ...@@ -2,13 +2,25 @@ cmake_minimum_required(VERSION 3.5)
add_sources(parse.cpp) add_sources(parse.cpp)
add_executable(parse parse.cpp) add_executable(parse parse.cpp)
set_target_properties(parse PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(parse yaml-cpp) target_link_libraries(parse yaml-cpp)
add_sources(sandbox.cpp) add_sources(sandbox.cpp)
add_executable(sandbox sandbox.cpp) add_executable(sandbox sandbox.cpp)
set_target_properties(sandbox PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(sandbox yaml-cpp) target_link_libraries(sandbox yaml-cpp)
add_sources(read.cpp) add_sources(read.cpp)
add_executable(read read.cpp) add_executable(read read.cpp)
set_target_properties(read PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(read yaml-cpp) target_link_libraries(read yaml-cpp)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment