为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用CMake检测编译器的C ++ 11支持

如何使用CMake检测编译器的C ++ 11支持

C++
慕后森 2019-12-12 14:27:37
有没有一种方法可以让CMake自动检测是否编译器支持C ++ 11?最好在CMake运行期间通知用户代码将不会编译,因为编译器不支持C ++ 11。目前,我设置了C ++ 11标志。但是,如果编译器不支持它,则用户会在CMake运行期间收到编译错误,而不是错误。完美的东西就像find_package()。但是,我没有找到任何提供所需功能的模块或功能。另外,最好具有检测编译器是否需要标志std=c++0x或的功能std=c++11。是否有可用的东西,或者我需要自己开发?以下是到目前为止我使用的一些代码,但是仅适用于GNU'c GCC编译器。如果有一个更通用的解决方案,那将是很好的。if(CMAKE_COMPILER_IS_GNUCXX)   execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)   if (GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7)        message(STATUS "C++11 activated.")        add_definitions("-std=gnu++11")   elseif(GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3)        message(WARNING "C++0x activated. If you get any errors update to a compiler which fully supports C++11")        add_definitions("-std=gnu++0x")   else ()        message(FATAL_ERROR "C++11 needed. Therefore a gcc compiler with a version higher than 4.3 is needed.")      endif()else(CMAKE_COMPILER_IS_GNUCXX)   add_definitions("-std=c++0x") endif(CMAKE_COMPILER_IS_GNUCXX)
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 2143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信