【问题标题】:Eclipse can't fully parse Eigen C++ library, but it compiles okEclipse 无法完全解析 Eigen C++ 库,但编译正常
【发布时间】:2014-09-25 01:52:34
【问题描述】:

我在 ubuntu 上使用 Eigen C++ 矩阵库和 Eclipse。 这是简单的代码:

#include <iostream>
#include <eigen3/Eigen/Core>
using namespace Eigen;
using namespace std;

int main() {
  VectorXcd spec(5);
  spec(4) = std::complex<double>(1, 2);
  cout << spec(4).imag() << "\n";
  return 0;
}

它运行正常,但 Eclipse 显示一个名为“无法解决方法 'imag' 的语义错误”。 这种现象也发生在我自己的 Eigen 项目中。我使用了几个 3rd 方库,但此类错误仅与 Eigen 有关。 但是,如果我在windows下切换到visual studio 2013,一切正常,我也可以进入Eigen库中相关代码的实现。

我猜是模板库的解析问题。

【问题讨论】:

  • 我在使用 Netbeans C++(Ubuntu 和 windows)时遇到了同样的问题

标签: c++ linux eclipse eigen


【解决方案1】:

Eclipse 中的错误突出显示不是编译器的输出。 通常,Eclipse 甚至不知道头文件的位置。 有不同的选项可以告诉 Eclipse 包含文件的位置:

  1. 您可以在 C++ 包含的列表中添加 /usr/include/eigen3。 (右键单击项目、属性、C/C++ 常规、路径和符号、所有配置、包括、C++、添加...)。这很繁琐,必须为所有配置和项目完成。

  2. 当包含路径出现在编译器日志中时,Eclipse 有时会自动找到它们。例如,如果您使用 CMake 作为生成器并在 Eclipse 中构建,则设置更详细的编译命令会将这些路径转发到 Eclipse。为此,请将set(CMAKE_VERBOSE_MAKEFILE ON) 添加到您的顶级CMakeLists.txt。在 Eclipse 项目的上下文菜单中进行清理、重新编译、重新运行索引。

  3. 或者,您可以设置不同的构建过程,其中构建系统会生成您的 Eclipse 项目。例如,CMake 可以创建使用 Ninja 构建系统的 Eclipse 项目。然后,该项目具有正确的设置来进行语法突出显示。 https://cmake.org/cmake/help/v2.8.9/cmake.html#gen:EclipseCDT4-Ninja

【讨论】:

  • 语法高亮与问题有什么关系?
  • 你是对的,它是关于 Eclipse 突出显示错误和警告,而不是语法。如果问题不仅限于 Eigen,可能是因为 Eclipse 没有解析 C++11 stackoverflow.com/a/9135135/2079934
猜你喜欢
  • 2012-01-02
  • 1970-01-01
  • 2020-01-27
  • 2013-01-16
  • 1970-01-01
  • 2016-09-25
  • 2018-07-28
  • 2011-12-15
  • 2014-04-06
相关资源
最近更新 更多