From 227170dc2f209795974fdeea2df96c699de981a0 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Mon, 3 Aug 2020 11:44:16 -0400 Subject: [PATCH] fix: better handling of PYBIND11_CPP_STANDARD --- tools/pybind11Tools.cmake | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/pybind11Tools.cmake b/tools/pybind11Tools.cmake index 258aaac0..703c08d0 100644 --- a/tools/pybind11Tools.cmake +++ b/tools/pybind11Tools.cmake @@ -25,14 +25,23 @@ include(CheckCXXCompilerFlag) # Warn or error if old variable name used if(PYBIND11_CPP_STANDARD) - if(NOT CMAKE_CXX_STANDARD) - string(REGEX MATCH [=[..^]=] VAL "${PYBIND11_CPP_STANDARD}") + string(REGEX MATCH [[..$]] VAL "${PYBIND11_CPP_STANDARD}") + if(CMAKE_CXX_STANDARD) + if(NOT CMAKE_CXX_STANDARD STREQUAL VAL) + message(WARNING "CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} does not match " + "PYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}, " + "please remove PYBIND11_CPP_STANDARD from your cache") + endif() + else() set(supported_standards 11 14 17 20) if("${VAL}" IN_LIST supported_standards) message(WARNING "USE -DCMAKE_CXX_STANDARD=${VAL} instead of PYBIND11_PYTHON_VERSION") - set(CMAKE_CXX_STANDARD ${VAL}) + set(CMAKE_CXX_STANDARD + ${VAL} + CACHE STRING "From PYBIND11_CPP_STANDARD") else() - message(FATAL_ERROR "PYBIND11_CPP_STANDARD should be replaced with CMAKE_CXX_STANDARD") + message(FATAL_ERROR "PYBIND11_CPP_STANDARD should be replaced with CMAKE_CXX_STANDARD " + "(last two chars: ${VAL} not understood as a valid CXX std)") endif() endif() endif()