如何在 Netbeans 中启用 C++17?

How do you enable C++17 in Netbeans?

在工具 > 选项 > C/C++ > 其他中,没有将 C++17 作为默认标准的选项。

如何编译需要 C++17 的代码?

已于 21 年 3 月 28 日更新 NetBeans 12,如本答案末尾所述。

C++17 标准是在 NetBeans 8.2 发布一年后发布的,因此 C++17 不可用作为 8.2 标准版本中的一个选项。

但是,NetBeans 错误报告 Bug 271136 - Support C++17 standard addressed this deficiency, and if you download and install any of the most recent nightly builds of NetBeans 8.2 from 2018 问题已解决; C++17 在创建 C++ 项目时作为一个选项可用:

如果你然后 select {project} > Properties > Build > C++ Compiler 你可以验证 C++17 正在使用标准:

备注:

  • 当你创建后续的C++项目时,项目向导默认会继续使用C++17标准,所以它成为“默认标准”unless/until 你select另类。
  • 使用每晚构建的 NetBeans 8.2 而不是标准版本也是可取的,因为它包含许多不相关的错误修复。
  • 一个更好的选择(如果可能的话)是 download and install the latest release of NetBeans,Apache NetBeans 11.2 也提供 C++17 作为一个选项。
  • 如果您安装 NetBeans 8.2 或 NetBeans 11.2 的夜间构建版,您现有的 NetBeans 安装 8.x 将不会受到影响,因此您可以在必要时安全地恢复。

2020 年 1 月 21 日和 20 年 1 月 22 日更新:

这些是使 C++17 在 NetBeans 11.2 上可用所需的步骤:

  • 使用 File > New Project... 打开项目向导显示无法创建 C/C++ 项目默认。
  • Select 工具>插件>设置然后点击添加按钮。
  • 更新定制中心屏幕中,将名称设置为NBDevDarkThemesURLhttp://bits.netbeans.org/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz然后点击确定.
  • 确保只选中 设置 选项卡上的 NbDevDarkBeans 条目。
  • 安装 C/C++ 插件,方法是单击 可用插件 选项卡,然后检查 [=49] 的条目=]C/C++。该插件的版本应为 1.31.5.1。单击 安装 按钮。
  • 安装插件后,单击 已安装插件 选项卡,选中 显示详细信息 复选框并向下滚动以验证C/C++ 插件已安装并且 Active
  • 转到 工具 > 选项 > C/C++ >,单击 构建工具 选项卡并配置您的外部 C/C++ 需要的环境。例如:
  • 现在转到 文件 > 新建项目... 你应该可以 select C/C++ > C/C++ 应用程序.
  • 单击下一步>。在 项目名称和位置 屏幕上,您现在应该能够 select C++17 标准:

21 年 3 月 28 日更新 NetBeans 版本 12.x:

坏消息:NetBeans 不再正式 支持 C++!请参阅 NetBeans 团队负责人 Geertjan Welenga 于 2021 年 3 月 25 日对最近的错误报告做出的明确回应 NETBEANS-5501 C++17 no longer available

*At the moment, NetBeans doesn't support C/C++, the plugins you were/are using from 8.2 are not really officially supported, though work on this is ongoing here, with an end goal to having it officially part of NetBeans, though that will take a while:

https://lists.apache.org/thread.html/r4ac84633554ce80d99b0710e7a803ce1dc322680c914b18058876b51%40%3Cdev.netbeans.apache.org%3E

You're welcome to join in with the discussions on dev above.*

也就是说,有一个 非官方 解决方法,如错误报告 NETBEANS-4452 The Plugin Installer found problem timeout of loading C/C++ Remote Development API... while install the following plugins: C++ 中所述。即:

  • 下载JDK8(如果需要)。
  • 通过编辑 netbeans.conf,暂时将 NetBeans 12 使用的 JDK 设置为 JDK 8,然后重新启动 NetBeans。
  • 安装相关的 C/C++ 插件。
  • 通过编辑 netbeans.conf[=108,将 JDK NetBeans 12 重置为您最初使用的那个 - 对于大多数用户来说大概是 JDK 14 =],然后重新启动 NetBeans。
  • C++ 17 应该可以在 NetBeans 12 上使用,但要清楚它不受官方支持。

接受的答案完全有效,但旧的插件存储库已关闭,oracle 现在将所有 link 重定向到他们的基础架构到 apache 站点。这意味着我们现在可以下载仅由 apache 提供的插件。 要向 NetBeans 11 添加对 C++ 17 的支持( 仅在 11.0 上进行了测试,但有人报告它在 12.3 上工作,请参阅评论),您需要执行以下操作

  1. 手动添加提供此类支持的CND模块的插件。插件版本应高于1.31.5.1
  2. 确保 NetBeans 使用 JDK8 because old plugins required a 模块。例如,在 JDK14.
  3. 中不可用

手动安装步骤

  1. 我下载了支持 C++17 所需的所有插件(NBM 文件)。可以下载here. Beare in mind that the pack was tested only with 11.00 NetBeans. Please, use 11.0 NetBeans.
  2. 然后您需要将存档解压缩到一个文件夹
  3. 启动 NetBeans,转到工具 -> 插件 -> 下载。
  4. 单击“添加插件”和select 存档中的所有插件。检查您是否有 64 个插件可供安装。为什么需要这么多插件?因为C++插件依赖其他插件。所以你需要提供更新的版本。
  5. 点击安装。会有一个警告,将安装额外的插件:
  6. 安装后,转到“已安装”选项卡,选中“显示详细信息”选项并找到 C/C++ 插件。验证版本是否为 1.31.5.1:

自动安装

事实是夜间构建存储库并未完全关闭。您需要知道访问它的确切 IP 地址。 因此,您可以使用已接受答案中的所有步骤,而不是 link

http://bits.netbeans.org/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz

你应该使用:

http://137.254.56.27/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz

但是oracle可以随时限制访问。此外,确保您的 NetBeans 在 JDK8(upack200 问题)上运行。

支持 C++17 的 NetBeans 8.2 Dev Build

如果您正在寻找支持 C++17 的旧 8.2 版本 here 来自 oracle 的最后一个开发版本 (20180420)。它仅在 JDK 1.8

上运行