Eclipse CDT索引器不知道C ++ 11容器

问题描述 投票:47回答:8

我在Eclipse CDT中配置了一个C ++ 11项目以使用gcc-4.7。它不是我系统上的默认编译器,它不支持C ++ 11。为了使编译工作,我需要传递标志-std=c++11并且还包括以下标题路径:/usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2

每当我使用像std::unordered_setstd::unordered_map这样的C ++ 11容器类型时,CDT索引器就会抱怨:Symbol unordered_set could not be resolved。如何告诉索引器正确解析这些符号?

这就是我配置索引器的方式:

据我了解设置,索引器应该使用当前活动的构建配置中的编译器设置。编译工作正常,为什么不编制索引呢?

eclipse c++11 build indexer
8个回答
36
投票

如本论坛帖子所述:

http://www.eclipse.org/forums/index.php/mv/msg/282618/

  • 右键单击该项目,然后转到“属性”C / C ++常规 - >路径和符号 - >符号 - > GNU C ++。
  • 单击“添加...”并将__GXX_EXPERIMENTAL_CXX0X__粘贴到“名称”中,并将“值”留空。点击Apply,做任何要求你做的事,然后按OK。

81
投票

设置**__GXX_EXPERIMENTAL_CXX0X__**对我的情况没有帮助(2014年7月,Eclipse Kepler 20130919,Ubuntu 12.04)。

要修复C ++ 11语法高亮,请转到:

项目属性 - > C / C ++通用 - >路径和符号 - >符号 - > GNU C ++

并覆盖符号(即添加新符号):

__cplusplus

有价值的

201103L

更新:如果您使用较新版本的Eclipse(截至2016年)并仍然遇到相同的问题,请尝试使用值(由jose.diego指出):

201402L

确保在项目设置中启用了索引器(C / C ++ general - > Indexer)

然后重新索引(项目 - > C / C ++索引 - >重建)

如果问题仍然存在再次重新索引。它现在应该工作。


48
投票

最近我在一些幸运的谷歌搜索后解决了这个问题。

单击您的项目,然后右键单击 - >属性

选择“C / C ++通用 - >处理器包含路径,宏等......”

选择“提供商”标签

取消选择除“CDT用户设置条目”和“CDT GCC内置编译器设置”之外的所有内容

点击“CDT GCC内置编译器设置”

取消选择“使用项目之间共享的全局提供程序”

编辑底部标有“Command to get compiler specs”的框

插入命令-std = c ++ 11,看起来像这样:

${COMMAND} -std=c++11 -E -P -v -dD "${INPUTS}"

单击“应用”和“确定”。

这对我有用。您可能需要重新编制项目索引。


9
投票

或者去:

  • C / C ++ Build-> Discovery Options-> GCC C ++ Compiler
  • 将您的标志添加到编译器调用参数。像-std = c ++ 11 -m32
  • 清除已发现的信息:点击清除
  • 重建项目

之后,将使用正确的值更新所有符号,并且索引器应按预期工作


6
投票

对于使用外部构建器的项目,我的解决方法是定义符号:

__cplusplus

价值:

201403

在项目中:路径和符号 - >符号/ GNU C ++。

这在eclipse Kepler CDT版本中有效:8.3.0.201402142303。


2
投票

this guide

  1. C / C ++ Build-> Settings-> GCC C ++ Compiler-> Dialect
  2. 在“语言标准”中选择“ISO C ++ 11(-std = c ++ 0x)”
  3. 申请并确定
  4. 重建项目,它的工作原理:)

1
投票

以下工作在Eclipse C/C++ Oxygen.2与gcc-5.5.0

Eclipse Properties->C/C++ Build->Settings->GCC C++ Compiler->Dialect->Other dialect flags: -std=c++17

不要在Language standard下拉列表中选择任何内容。


0
投票

以下配置可帮助我解决原始问题中指出的问题。

环境:Eclipse(Oxygen.3a版本(4.7.3a)),Cygwin64。如果您有不同版本的Cygwin,您可以找到类似的目录,如下所示。

第1步:确保您有以下两个目录:

   C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include
   C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include\c++

如果您没有看到上述两个目录,请启动您的Cygwin安装程序并安装gcc-core,gcc-g ++和libgcc1。

步骤2:如果您没有看到上面两个包含目录,请将目录C:\cygwin64\lib\gcc\x86_64-pc-cygwin\7.4.0\include复制到C:\cygwin64\usr

第3步:转到项目属性 - > C / C ++常规 - >路径和符号确保您可以看到列出以下两个路径

   C:\cygwin64\usr\include
   C:\cygwin64\usr\include\c++

第4步:属性 - > C / C ++构建/设置/选择Cygwin PE分析器

第5步:属性 - > C / C ++构建/工具链编辑器选择Cygwin GCC

第6步:属性 - > C / C ++常规/索引器选择启用索引器

第7步:项目 - > C / C ++索引 - >重建

现在你的eclipse应该能够看到C ++ 11类型。

© www.soinside.com 2019 - 2024. All rights reserved.