【问题标题】:how to use c++20 in cmake project如何在cmake项目中使用c++20
【发布时间】:2020-06-06 10:30:07
【问题描述】:

我想使用 c++20 中可用的标头。

我正在使用最新版本的 cmake。

我的 CMakeFiles 看起来像

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")

我使用 clang 9 作为我的编译器。

但是在包含以下内容时出现以下错误:

fatal error: 'format' file not found
#include <format>

我也使用了标志-std=c++2a,但没有任何效果。简而言之,我觉得我在这里错过了一些重要的事情。 我对 cmake 有点陌生,有什么帮助吗?

【问题讨论】:

  • 好消息! MSVC 现在支持文本格式。

标签: c++ cmake format c++20


【解决方案1】:

根据 cppreference 上的C++ compiler support 页面 (archive),目前没有主流编译器支持 C++20 &lt;format&gt; 功能。

因此,您目前不能使用#include &lt;format&gt;。现在考虑使用 {fmt} 库,这是 C++20 &lt;format&gt; 库的基础。以安全高效着称。

【讨论】:

  • 我想知道为什么会这样。实现&lt;format&gt;有那么难吗?大多数编译器似乎已经支持更复杂的部分,例如“概念”。
  • @Ayxan Concepts 最初是一个 TS;许多编译器在几年前就已经在研究它了。然而,&lt;format&gt; 主要是标准化的 fmt 库。
  • 我偶然发现了这篇文章,正在搜索支持的不同 c++20 功能并点击了您的链接。桌子发生了一点变化,但Text formatting 仍然是全红的。 @Tak Makoni:如果您使用 MSVC,以下是每个 MSVC 版本支持的功能列表:docs.microsoft.com/en-us/cpp/overview/…
猜你喜欢
  • 2021-08-02
  • 2021-08-05
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多