mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 06:09:52 -06:00
Projects use `try_compile` to check if they will be able to compile some particular source code. When a language standard variable like `CMAKE_CXX_STANDARD` is set, then the project intends to compile source code using a compiler mode for that standard. Therefore it makes sense for `try_compile` to use that standard in the test project too. Unfortunately this was not done when support for the `CMAKE_CXX_STANDARD` variable was first implemented. Add a policy to introduce the improved behavior in a compatible way. Closes: #16456
24 lines
617 B
CMake
24 lines
617 B
CMake
enable_language(CXX)
|
|
try_compile(result ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CxxStandardGNU.cxx
|
|
CXX_STANDARD 11
|
|
CXX_STANDARD_REQUIRED 1
|
|
CXX_EXTENSIONS 0
|
|
OUTPUT_VARIABLE out
|
|
)
|
|
if(NOT result)
|
|
message(FATAL_ERROR "try_compile failed:\n${out}")
|
|
endif()
|
|
|
|
cmake_policy(SET CMP0067 NEW)
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED 1)
|
|
set(CMAKE_CXX_EXTENSIONS 0)
|
|
try_compile(result ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CxxStandardGNU.cxx
|
|
OUTPUT_VARIABLE out
|
|
)
|
|
if(NOT result)
|
|
message(FATAL_ERROR "try_compile failed:\n${out}")
|
|
endif()
|