首页 > 后端开发 > C++ > 如何使用 CMake 检测编译器中的 C 11 支持?

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

Mary-Kate Olsen
发布: 2024-11-02 18:26:31
原创
261 人浏览过

How to Detect C  11 Support in Your Compiler with CMake?

使用 CMake 检测编译器对 C 11 的支持

软件开发中的挫折之一是尝试编译需要已安装编译器不支持的功能的代码。例如,如果用户拥有仅支持 C 98 的较旧编译器,则需要 C 11 的软件应用程序可能无法正确编译。在这种情况下,如果编译在 CMake 运行期间而不是在编译时失败会很有帮助。

解决方案

CMake 3.1.0 及更高版本允许检测 C 编译器支持哪些 C 功能。

<code class="cmake">cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(foobar CXX)
message("Your C++ compiler supports these C++ features:")
foreach(i ${CMAKE_CXX_COMPILE_FEATURES})
  message("${i}")
endforeach()</code>
登录后复制

在大多数情况下,您不必指定直接使用 C 功能,而是指定所需的 C 功能并让 CMake 推导出 C 标准。然后,CMake 将确保使用正确的标志调用编译器(例如 -std=c 11)。

显式声明您的 C 标准

<code class="cmake"># Explicitly set C++ standard and required features
add_executable(prog main.cc)
set_property(TARGET prog PROPERTY CXX_STANDARD 11)
set_property(TARGET prog PROPERTY CXX_STANDARD_REQUIRED ON)</code>
登录后复制

使用目标编译功能

<code class="cmake"># Specify required C++ features and let CMake deduce the C++ standard
target_compile_features(foobar PRIVATE
  cxx_strong_enums
  cxx_constexpr
  cxx_auto_type)</code>
登录后复制

以上是如何使用 CMake 检测编译器中的 C 11 支持?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板