1 2# Test that the compiler is configured with a C++ 14 standard library 3 4set(TEST_CXX14_SOURCE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/try_cxx14_library.cpp) 5file(WRITE ${TEST_CXX14_SOURCE} 6"// Test for C++14 standard library support 7#include <tuple> 8 9int main(int argc, char **argv) 10{ 11 std::tuple<int,double> t(1, 3.5); 12 // Accessing a tuple member by type is a C++14 feature 13 int j = std::get<int>(t); 14 return 0; 15} 16") 17 18 19try_compile(CXX14_LIBRARY_OKAY ${CMAKE_BINARY_DIR} 20 ${TEST_CXX14_SOURCE} 21 CXX_STANDARD 14 22 CXX_STANDARD_REQUIRED ON 23 OUTPUT_VARIABLE COMPILE_OUTPUT) 24 25 26if (NOT CXX14_LIBRARY_OKAY) 27 set(COMPILE_FAIL_OUTPUT cpp14_compile_fail.txt) 28 file(WRITE "${CMAKE_BINARY_DIR}/${COMPILE_FAIL_OUTPUT}" "${COMPILE_OUTPUT}") 29 30 message(STATUS "C++14 standard library support not found") 31 message("compiler is ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") 32 if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") 33 message("Compiler detected is g++.\n Use version 5.0 or newer for a C++14 standard library") 34 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") 35 message("Compiler detected is clang++.\n If not using libcxx, ensure a g++ version greater than 5.0 is on the path") 36 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") 37 message("Compiler detected is icpc.\n Ensure a gcc version greater than 5.0 is on the path. Or use the -cxxlib switch to point to a newer gcc install.") 38 endif() 39 message(" Output of test compile is in ${COMPILE_FAIL_OUTPUT}") 40 message(FATAL_ERROR "stopping") 41else() 42 message(STATUS "C++14 standard library supported") 43endif() 44