mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-22 14:23:10 -05:00
f72ba42b7c
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
595 B
CMake
24 lines
595 B
CMake
enable_language(C)
|
|
try_compile(result ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CStandardGNU.c
|
|
C_STANDARD 99
|
|
C_STANDARD_REQUIRED 1
|
|
C_EXTENSIONS 0
|
|
OUTPUT_VARIABLE out
|
|
)
|
|
if(NOT result)
|
|
message(FATAL_ERROR "try_compile failed:\n${out}")
|
|
endif()
|
|
|
|
cmake_policy(SET CMP0067 NEW)
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_STANDARD_REQUIRED 1)
|
|
set(CMAKE_C_EXTENSIONS 0)
|
|
try_compile(result ${CMAKE_CURRENT_BINARY_DIR}
|
|
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/CStandardGNU.c
|
|
OUTPUT_VARIABLE out
|
|
)
|
|
if(NOT result)
|
|
message(FATAL_ERROR "try_compile failed:\n${out}")
|
|
endif()
|