9

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

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

4

2 回答 2

13

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

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

但是,NetBeans 错误报告错误 271136 - 支持 C++17 标准解决了这一缺陷,如果您从 2018 年下载并安装任何最新的 NetBeans 8.2 夜间版本,则该问题已得到解决;创建 C++ 项目时, C++17可作为一个选项使用:

选择Cpp17

如果您随后选择{project} > Properties > Build > C++ Compiler,您可以验证是否使用了C++17标准:

项目属性

笔记:

  • 当您创建后续 C++ 项目时,项目向导将默认继续使用C++17标准,因此它成为“默认标准”,除非/直到您选择替代方案。
  • 使用 NetBeans 8.2 的夜间版本而不是标准版本也是可取的,因为它包含许多不相关的错误修复。
  • 一个更好的选择(如果可能的话)是下载并安装最新版本的 NetBeans Apache NetBeans 11.2,它还提供C++17作为选项。
  • 如果您安装 NetBeans 8.2 或 NetBeans 11.2 的每晚版本,则不会触及现有的 NetBeans 8.x 安装,因此您可以在必要时安全地恢复。

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

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

  • 使用File > New Project...打开项目向导显示默认情况下无法创建C/C++项目。
  • 选择工具 > 插件 > 设置,然后单击添加按钮。
  • Update Customizer Center屏幕中,将Name设置为NBDevDarkThemes,将URL设置为http://bits.netbeans.org/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz并单击OK
  • 确保仅选中Settings选项卡上的NbDevDarkBeans条目。
  • 通过单击可用插件选项卡安装C/C++插件,然后检查C/C++条目。该插件的版本应该是1.31.5.1。单击安装按钮。
  • 安装插件后,单击Installed Plugins选项卡,选中Show Details复选框并向下滚动以验证 C/C++ 插件是否已安装并处于活动状态: Cpp插件
  • 转到Tools > Options > C/C++ >,单击Build Tools选项卡并根据需要配置您的外部 C/C++ 环境。例如: Cpp选项
  • 现在转到File > New Project...你应该可以选择C/C++ > C/C++ Application
  • 单击下一步 >。在项目名称和位置屏幕上,您现在应该能够选择C++17作为标准: 新Cpp项目

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

坏消息:NetBeans 不再正式支持 C++!请参阅 NetBeans 团队负责人 Geertjan Welenga 于 21 年 3 月 25 日对最近的错误报告NETBEANS-5501 C++17 不再可用的最终回复:

*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++。那是:

  • 下载 JDK 8(如有必要)。
  • 通过编辑netbeans.conf将 JDK NetBeans 12 使用临时设置为 JDK 8 ,然后重新启动 NetBeans。
  • 安装相关的 C/C++ 插件。
  • 通过编辑netbeans.conf,然后重新启动 NetBeans,将 JDK NetBeans 12 使用重置为您最初使用的版本 - 对于大多数用户来说可能是 JDK 14 。
  • 然后 C++ 17 应该可以在 NetBeans 12 上使用,但清楚的是它不受官方支持。
于 2020-01-21T06:08:43.907 回答
2

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

  1. 手动添加提供此类支持的 CND 模块的插件。插件的版本应该在1.31.5.1以上
  2. 确保 NetBeans 使用JDK8,因为旧插件需要一个upack200模块。例如,它在 JDK14 中不可用。

手动安装的步骤

  1. 我下载了 C++17 支持所需的所有插件(NBM 文件)。你可以在这里下载。请记住,该包仅使用 11.00 NetBeans 进行了测试。请使用11.0 NetBeans
  2. 然后你需要将档案解压到一​​个文件夹中
  3. 启动 NetBeans,转到工具 -> 插件 -> 已下载。
  4. 单击添加插件并选择存档中的所有插件。检查您是否有 64 个插件可供安装。为什么需要这么多插件?因为 C++ 插件依赖于其他插件。所以你需要提供更新的版本。 在此处输入图像描述
  5. 点击安装。将会有一个警告说将会安装额外的插件: 在此处输入图像描述
  6. 安装后,转到已安装选项卡,选中显示详细信息选项并找到 C/C++ 插件。验证版本是否为 1.31.5.1: 在此处输入图像描述

自动安装

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

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 版本,请点击此处来自 oracle 的最后一个开发版本 (20180420)。它仅在 JDK 1.8 上运行

于 2021-03-27T15:14:09.323 回答