C++ Eclipse CDT:编译器问题

C++ Eclipse CDT:编译器问题,c++,eclipse,c++11,eclipse-cdt,toolchain,C++,Eclipse,C++11,Eclipse Cdt,Toolchain,我正在运行Ubuntu16.04,刚刚第一次打开了新安装的EclipseCDToxygen 导入了一个现有的C++项目,它使用一个CMAX文件来构建,它设置了 Addio定义(-STD= C++ 11)< /C> > /P> 我使用CMake和命令CMake-G“Eclipse CDT4-Unix Makefiles”-D CMake_BUILD_TYPE=Debug../src/生成Eclipse项目文件,然后使用这些文件将项目导入Eclipse 现在,我正在查看Eclipse中新导入的项目中

我正在运行Ubuntu16.04,刚刚第一次打开了新安装的EclipseCDToxygen

导入了一个现有的C++项目,它使用一个CMAX文件来构建,它设置了<代码> Addio定义(-STD= C++ 11)< /C> > /P> 我使用CMake和命令

CMake-G“Eclipse CDT4-Unix Makefiles”-D CMake_BUILD_TYPE=Debug../src/
生成Eclipse项目文件,然后使用这些文件将项目导入Eclipse

现在,我正在查看Eclipse中新导入的项目中的一个源文件,并看到大量问题。所有类型都无法解析,例如
std::default\u random\u engine

我猜Eclipse没有配置正确的工具链

我有几个问题:

  • 如何查看项目的工具链以及如何更改它?我查阅了帮助文章,但我在“项目属性”菜单中看到的部分与帮助文章中的部分不同。我看到的项目属性菜单没有“C/C++构建”部分。这怎么可能

  • 我用来生成Eclipse项目文件的CMake文件指定应该使用C++11,那么为什么不是这样呢

  • 以下是“我的项目属性”菜单的外观:

    <?xml version="1.0" encoding="UTF-8"?>
    <projectDescription>
        <name>particle_filter</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
            <buildCommand>
                <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
                <triggers>clean,full,incremental,</triggers>
                <arguments>
                </arguments>
            </buildCommand>
            <buildCommand>
                <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
                <triggers>full,incremental,</triggers>
                <arguments>
                </arguments>
            </buildCommand>
        </buildSpec>
        <natures>
            <nature>org.eclipse.cdt.core.cnature</nature>
            <nature>org.eclipse.cdt.core.ccnature</nature>
            <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
            <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
        </natures>
    </projectDescription>
    

    这就是我的
    .project
    文件的外观:

    <?xml version="1.0" encoding="UTF-8"?>
    <projectDescription>
        <name>particle_filter</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
            <buildCommand>
                <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
                <triggers>clean,full,incremental,</triggers>
                <arguments>
                </arguments>
            </buildCommand>
            <buildCommand>
                <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
                <triggers>full,incremental,</triggers>
                <arguments>
                </arguments>
            </buildCommand>
        </buildSpec>
        <natures>
            <nature>org.eclipse.cdt.core.cnature</nature>
            <nature>org.eclipse.cdt.core.ccnature</nature>
            <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
            <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
        </natures>
    </projectDescription>
    
    
    粒子滤波器
    org.eclipse.cdt.managedbuilder.core.genmakebuilder
    干净、完整、增量、,
    org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
    全部、增量、,
    org.eclipse.cdt.core.cn
    org.eclipse.cdt.core.ccnature
    org.eclipse.cdt.managedbuilder.core.managedBuildNature
    org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
    
    非常感谢

    缺少C/C++构建部分可能是由于损坏的
    .project
    .cproject
    .settings/language.settings.xml
    文件引起的:

  • 创建一个相同类型的新项目
  • 在Navigator视图中,将
    .project
    .cproject
    .settings/language.settings.xml
    文件新项目的相应文件进行比较,以查找问题(确保在
    .cproject
    .settings/language.settings.xml
    中使用相同的ID,但与其他项目中的ID不同)
  • 缺少C/C++生成部分可能是由于损坏的
    .project
    .cproject
    .settings/language.settings.xml
    文件造成的:

  • 创建一个相同类型的新项目
  • 在Navigator视图中,将
    .project
    .cproject
    .settings/language.settings.xml
    文件新项目的相应文件进行比较,以查找问题(确保在
    .cproject
    .settings/language.settings.xml
    中使用相同的ID,但与其他项目中的ID不同)

  • 我认为CMake的CDT项目生成器已经过时了,并且没有为C++11支持正确配置生成的项目

    我建议使用以下方法来配置C++11支持:

    • 转到
      项目属性| C/C++常规|预处理器包含路径
    • 提供程序
      选项卡中,选择
      CDT GCC内置编译器设置
    • (如有必要,取消选中“使用项目间共享的全局提供程序”。)
    • -std=c++11
      添加到“获取编译器规范的命令”中
    • 应用并重新生成项目的索引

    完成此操作后,应正确解析C++11符号。

    我认为CMake的CDT项目生成器已经过时,无法正确配置生成的项目以支持C++11

    我建议使用以下方法来配置C++11支持:

    • 转到
      项目属性| C/C++常规|预处理器包含路径
    • 提供程序
      选项卡中,选择
      CDT GCC内置编译器设置
    • (如有必要,取消选中“使用项目间共享的全局提供程序”。)
    • -std=c++11
      添加到“获取编译器规范的命令”中
    • 应用并重新生成项目的索引

    完成此操作后,C++11符号应正确解析。

    在Eclipse Oxygen中,项目属性中也应有一个C/C++构建部分。请在问题中添加项目属性对话框的屏幕截图。@howlger我添加了一个屏幕截图。非常感谢您的帮助!您的
    .project
    文件外观如何比如?如果创建一个新项目,C/C++构建部分也会丢失吗?
    .project
    在我看来不错。问题可能是由一个坏的
    .cproject
    文件引起的:如果用一个新项目的
    .cproject
    文件替换
    .cproject
    文件,会发生什么情况?在Eclipse中也应该有一个C/C++构建项目属性中的部分。请在问题中添加项目属性对话框的屏幕截图。@howlger我添加了一个屏幕截图。非常感谢您的帮助!您的
    .project
    文件是什么样子的?如果您创建了一个新项目,C/C++构建部分也会丢失吗?
    。project
    对我来说很好。也许不是问题是由损坏的
    .cproject
    文件引起的:如果将
    .cproject
    文件替换为
    .cproject