Eclipse无法完全解析Eigen C ++库,但它编译正常

时间:2014-09-25 01:52:34

标签: c++ linux eclipse eigen

我在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;
}
&#13;
&#13;
&#13;

它运行正常,但是eclipse表示一个名为&#34; Method&#39; imag&#39;无法解决&#34;。 这种现象也出现在我与Eigen的项目中。我使用了几个第三方库,但这些错误只与Eigen有关。 但是,如果我在Windows下切换到visual studio 2013,一切都还可以,我也可以在Eigen库中实现相关代码。

我想这是解析模板库的问题。

1 个答案:

答案 0 :(得分:1)

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

  1. 您可以添加/usr/include/eigen3 C ++包含的列表。 (右键单击项目,属性,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