【问题标题】:how to Enable c++17 Support in code blocks如何在代码块中启用 c++17 支持
【发布时间】:2017-09-02 17:57:00
【问题描述】:

在代码块中 Build 或 Compiler 选项中没有 C++17 选项,只有 C++14 如何在代码块中启用它,以便编码工具和编译器都支持它?

【问题讨论】:

  • -std=c++17 作为选项传递给编译器(如果使用 clang 或 gcc)。
  • @Basile Starynkevitch 我正在做一个项目,它确实需要 c++17 的新文件系统库
  • 然后避免它并使用 Boost 等效项。文件系统 API 也存在于 Qt 或 GTK 或 POCO 中,您可以使用这些。在 Linux 上,您可以只使用现有的(和稳定的)系统调用(readdirstat 等...)
  • 我知道,但我对使用 std 更感兴趣,我的项目是跨平台的
  • 那就等几年成熟了

标签: c++ codeblocks c++17


【解决方案1】:

Code::Blocks不是编译器(但有些人称其为source code editor,有时称自己为IDEs,它运行一些外部编译器)。

你需要一个C++17 编译器(一旦你有了一个,你可以配置你的IDE或编辑器来使用它适当的 选项)。尝试最新版本的GCC(至少GCC 7,也许等待GCC 8)或Clang(等待Clang5)和pass it-std=c++17选项

请注意,C++17 是计划于 2017 年底发布的 C++ 标准。您可能需要等待一段时间(可能是一两年),编译器和标准库实现才能正确、完整地实现它。

因此,我不建议在即将发布(2017 年底)的项目中使用 C++17 功能,因为那时您正在构建 β 质量基础。但是,如果您从事一个将于 2019 年发布的大型项目,您可能会冒险押注您在其中使用的 C++17 功能将在那个时候变得成熟。

关于标准库函数(例如std::filesystem),您会很容易找到近似等效的(例如,在本机操作系统或 POSIX API、Boost、Qt、POCO 中……)应该相当容易移植一旦 C++17 实现很常见。

(我建议在命令行上使用您的编译器,或使用makeninja 或其他一些build automation 系统运行编译器命令;详细信息可能因操作系统和编译器而异。)支持>

【讨论】:

  • 除了make之外,请推荐任何东西。像 CMake 这样跨平台的构建系统将是一个不错的建议。
  • cmake generate Makefiles
  • 当然,它可以生成一件事。实际上,您不想再生成 Makefile,而是生成 Ninja 文件,因为它们在各方面都非常出色。您还可以为许多不同的 IDE 生成项目文件。有适合每个平台和口味的东西。
  • 哦,另外,Clang 4 不支持 -std=c++17 标志,但是应该在下周发布的 Clang 5 支持。
  • @tambre:如果“相当小”是指文件系统,那么是的,只会有“少数”缺失的功能。 libc++ 和 libstdc++ 都没有实现 C++17 中定义的文件系统。
猜你喜欢
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
相关资源
最近更新 更多