如何检查Eigen C++模板库的版本号?

39

我将几个不同版本的Eigen添加到Visual C++默认目录中,但在一些测试数值示例中使用LDLT(Cholesky分解)时出现了崩溃问题。

因此,我想确定调试代码时实际活动的版本是哪个。

是否有任何函数可以指示当前活动的Eigen版本号?


7
在编译时,你可以获得EIGEN_WORLD_VERSIONEIGEN_MAJOR_VERSIONEIGEN_MINOR_VERSION三个版本号,你可以轻松将这些信息嵌入到你的应用程序中。 - Marc Glisse
非常感谢。还有一个问题,如果它们分别是3191,这是否意味着最新的版本是3.20,因为没有发布3.191的版本? - LCFactorization
1
3.1.91 对我来说听起来像是 3.2 的 beta 版本,但我不确定。 - Marc Glisse
3
这不是所期望的3.2.0版本。版本号宏定义在“Macros.h”中,该文件位于“\Eigen\src\Core\util\”目录下。谢谢。 - LCFactorization
4个回答

47

以下是评论的摘要:

  • 在编译时,您可以使用EIGEN_WORLD_VERSIONEIGEN_MAJOR_VERSIONEIGEN_MINOR_VERSION来获取版本信息,并将其嵌入到您的应用程序中。

  • 3.1.91听起来像是3.2beta版本

  • 版本号宏定义在位于\Eigen\src\Core\util\Macros.h中。


24
在Debian或类似系统中,运行命令 cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h | grep VERSION 可以显示Eigen版本号。 - kebs

21

为了检查Eigen C++模板库的版本号,只需输入

dpkg -p libeigen3-dev

在终端中。 或者只需输入

pkg-config --modversion eigen3

你会得到Eigen的版本。


有点好笑,第一个命令给出的是"3.2.0-8",而第二个命令给出的是"3.2.92"。 - kebs

4

虽然这不是问题的目标,但对于想要检查版本是否等于或者比特定版本更新以确保与不同版本的Eigen兼容性的人来说,可能会感兴趣。可以使用EIGEN_VERSION_AT_LEAST(x, y, z)宏更轻松地完成以下操作:

#if EIGEN_VERSION_AT_LEAST(3,3,0)
    // Implementation for Eigen 3.3.0 and newer
#else
    // Implementation for older Eigen versions
#endif 

这个宏还在 Eigen/src/Core/util/Macros.h 中定义,并在内部使用 EIGEN_WORLD_VERSIONEIGEN_MAJOR_VERSIONEIGEN_MINOR_VERSION


4

在Linux上:

grep "#define EIGEN_[^_]*_VERSION" /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h

你会获得类似下面的东西:
#define EIGEN_WORLD_VERSION 3
#define EIGEN_MAJOR_VERSION 3
#define EIGEN_MINOR_VERSION 7

这意味着版本是3.3.7


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接