Eclipse CDT Oxygen:编译器问题

时间:2017-08-19 22:16:48

标签: c++ eclipse c++11 eclipse-cdt toolchain

我正在运行Ubuntu 16.04并且刚刚第一次打开我刚刚安装的Eclipse CDT Oxygen。

我导入了一个现有的C ++项目,可以使用设置add_definitions(-std=c++11)的CMake文件进行构建。

我使用CMake和命令cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../src/生成Eclipse项目文件,然后使用它们将项目导入Eclipse。

现在,我正在Eclipse中新导入的项目中查看源文件,并看到大量问题。它是所有无法解决的类型,例如std::default_random_engine

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

我有几个问题:

  1. 如何查看项目的工具链以及如何更改?我查看了this帮助文章,但我看到的项目属性菜单中的部分与帮助文章中的部分不同。我看到的项目属性菜单没有" C / C ++ Build"部分。怎么会这样?

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

  3. 以下是我的项目属性菜单:

    enter image description here

    这就是我的.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>
    

    非常感谢!

2 个答案:

答案 0 :(得分:2)

已损坏的 C / C ++构建部分可能是由已损坏.project {{1}引起的} .cproject 文件:

  1. 创建相同类型的新项目
  2. Navigator 视图中比较 .settings/language.settings.xml .project .cproject 文件 新项目的相应文件以查找问题(请确保在{{中使用相同的ID) 1}}和.settings/language.settings.xml,但ID不同于其他项目)

答案 1 :(得分:1)

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

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

  • 转到Project Properties | C/C++ General | Preprocessor Include Paths
  • Providers标签中,选择CDT GCC Built-in Compiler Settings
  • (如有必要,请取消选中“使用项目之间共享的全局提供商”。)
  • -std=c++11添加到“获取编译器规范的命令”。
  • 应用并重建项目的索引。

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