From 73aa51608e3516c54e712ebe7defb5642261d409 Mon Sep 17 00:00:00 2001 From: Nils Wentzell Date: Mon, 1 Feb 2021 09:42:03 -0500 Subject: [PATCH] [cmake] In extract_flags.cmake inspect INTERFACE_COMPILE_FEATURES and add -std=.. flags accordingly --- share/cmake/extract_flags.cmake | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/share/cmake/extract_flags.cmake b/share/cmake/extract_flags.cmake index ed5b6c1f..60e4b453 100644 --- a/share/cmake/extract_flags.cmake +++ b/share/cmake/extract_flags.cmake @@ -12,7 +12,7 @@ # # You may obtain a copy of the License at # https://www.gnu.org/licenses/gpl-3.0.txt - +# Author: Nils Wentzell # Recursively fetch all targets that the interface of a target depends upon macro(get_all_interface_targets name target) @@ -59,6 +59,13 @@ macro(extract_flags) set(${target}_CXXFLAGS "${${target}_CXXFLAGS} ${opt}") endforeach() + get_property_recursive(cxx_features TARGET ${target} PROPERTY INTERFACE_COMPILE_FEATURES) + if(cxx_std_20 IN_LIST cxx_features) + set(${target}_CXXFLAGS "${${target}_CXXFLAGS} -std=c++20") + elseif(cxx_std_17 IN_LIST cxx_features) + set(${target}_CXXFLAGS "${${target}_CXXFLAGS} -std=c++17") + endif() + get_property_recursive(defs TARGET ${target} PROPERTY INTERFACE_COMPILE_DEFINITIONS) foreach(def ${defs}) set(${target}_CXXFLAGS "${${target}_CXXFLAGS} -D${def}")