Eclipse CDT Oxygen:编译器问题
Eclipse CDT Oxygen: Compiler issue
我是 运行 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>
非常感谢!
缺失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 支持:
- 转到
Project Properties | C/C++ General | Preprocessor Include Paths
。
- 在
Providers
选项卡中,select CDT GCC Built-in Compiler Settings
。
- (如有必要,取消选中 "Use global provider shared between projects"。)
- 将
-std=c++11
添加到 "Command to get compiler specs"。
- 应用并重建项目的索引。
执行此操作后,C++11 符号应正确解析。
我是 运行 Ubuntu 16.04,刚刚第一次打开我新安装的 Eclipse CDT Oxygen。
我导入了一个现有的 C++ 项目,该项目使用设置 add_definitions(-std=c++11)
.
我使用 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>
非常感谢!
缺失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 支持:
- 转到
Project Properties | C/C++ General | Preprocessor Include Paths
。 - 在
Providers
选项卡中,selectCDT GCC Built-in Compiler Settings
。 - (如有必要,取消选中 "Use global provider shared between projects"。)
- 将
-std=c++11
添加到 "Command to get compiler specs"。 - 应用并重建项目的索引。
执行此操作后,C++11 符号应正确解析。