我正在运行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没有配置正确的工具链。
我有几个问题:
如何查看项目的工具链以及如何更改?我查看了this帮助文章,但我看到的项目属性菜单中的部分与帮助文章中的部分不同。我看到的项目属性菜单没有" C / C ++ Build"部分。怎么会这样?
我用来生成Eclipse项目文件的CMake文件指定应该使用C ++ 11,那么为什么不是这样呢?
以下是我的项目属性菜单:
这就是我的.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>
非常感谢!
答案 0 :(得分:2)
已损坏的 C / C ++构建部分可能是由已损坏.project
, {{1}引起的} 或 .cproject
文件:
.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符号。