2016-12-06 40 views
0

当运行我这个CGAL程序包括例如:CGAL错误:Eigen3需要 - >征似乎是好的,虽然

#include <CGAL/Epick_d.h> 

我得到的读两个错误消息:

C1189 #error: Eigen3 is required 

#error directive: Requires Eigen 

它们分别指向cartesian_la_base.h和constructors.h。 在那里,我发现下面的代码:

#ifndef CGAL_EIGEN3_ENABLED 
#error Requires Eigen 
#endif 

所以,在我看来,该CGAL_EIGEN3_ENABLED标志未设置。虽然我无法找到CGAL或Eigen的问题,但我为此感到有些困惑。 我为.../Eigen设置了一个环境变量,并将其包含在属性 - > c/C++ - >常规 - >其他包含目录以及链接器 - >常规中的 下。

奇怪的是,似乎没有人会收到相同的错误信息,从我用Google搜索这个问题的成功来判断。

我使用Visual Studio 2015.

希望这是足够的信息。 干杯

+0

您的计算机上是否有Eigen副本?在解决方案目录中?别的地方?如果是这样,在哪里(完整的编辑路径)?你有什么相关的额外包含目录? –

+0

你或cmake没有定义'CGAL_EIGEN3_ENABLED'?如果(EIGEN3_FOUND) 包含($ {EIGEN3_USE_FILE}) endif()'(对于注释中缺少换行符感到抱歉),您的cmake文件是否包含以下行:'find_package(Eigen3 3.1.0) ? –

+0

只需定义'CGAL_EIGEN3_ENABLED',你应该没问题。当在cmake中包含Eigen的使用文件时,应该设置此标志。 – sloriot

回答

0

在我的情况下,加上一行

#define CGAL_EIGEN3_ENABLED 

解决了这个问题。所以看来唯一的问题是国旗没有正确设置。

+0

显然我不能接受我自己的答案2天以上。对不起,发送垃圾邮件 –

+0

不要感到抱歉,这确实令人惊讶,并且在此处提供信息非常有用。注意,从CGAL-4.10开始,在支持'__has_include'的编译器上,宏将被自动定义。 –