1. Eigen
1.1 简要介绍
Eigen
是可以用来进行线性代数、矩阵、向量操作等运算的C++库,包含了绝大部分矩阵算法;Eigen
一个重要特点是采用源码的方式提供给用户使用,在使用时只需要包含Eigen
的头文件即可进行使用。之所以采用这种方式,是因为Eigen
采用模板方式实现,由于模板函数不支持分离编译,所以只能提供源码而不是动态库的方式供用户使用,因此非常轻量而易于跨平台。
1.2 依赖库
Eigen
不需要再配置其他库。
1.3 源码包下载
Eigen
源码地址:github
:https://gitlab.com/libeigen/eigen.git
2. Cmake构建项目
2.1 路径
源代码路径:D:/ThirdParty/eigen/eigen_3.3.8
构建项目路径:D:/ThirdParty/eigen/eigen_3.3.8_build
2.2 构建选项
名称 | 值 | 备注 |
---|---|---|
BUILD_TESTING | false | 减少编译时间 |
CMAKE_INSTALL_PREFIX | path | 编译时生成的安装文件路径 |
2.3 构建项目
步骤如下:
- 指定源码路径;
- 指定构建项目路径;
- 点击
Configure
; - 按照2.2节表中的值进行设置;
- 再次点击
Configure
; - 点击
Generate
,构建项目路径中将生成解决方案文件Eigen3.sln
。
点击
Configure
或Generate
后,如果顺利,会出现Configuring done
或Generating done
。
3. 打开解决方案并编译
3.1 编译解决方案
点击Open Project
(或者在2.3节步骤2中指定的构建项目路径中,找到生成的解决方案文件Eigen3.sln
,通过Visual Studio
打开),打开通过Cmake
构建的项目;
选中ALL_BUILD
项目,分别在Debug
和Release
模式下,重新生成解决方案。
如果将BUILD_TESTING
选项置为false
,该过程将很快,因为没有构建任何测试项目。
3.2 安装Eigen
选中INSTALL
项目,右击,重新生成,此时,将会在指定路径下(2.2节表中CMAKE_INSTALL_PREFIX
选项的值)生成两个文件夹include
和share
。
4. 实际项目环境配置
注:以下通过属性表的方式进行环境配置。
4.1 附加包含目录
$(eigen)\include\eigen3
$(eigen)
(在系统环境变量中添加并设置)就是2.2节表中CMAKE_INSTALL_PREFIX
选项的值。
4.2 测试代码
#include <iostream>
#include <Eigen/Dense>
int main()
{
Eigen::Matrix2d a;
a << 1, 2,
3, 4;
Eigen::MatrixXd b(2, 2);
b << 2, 3,
1, 4;
std::cout << "a + b =\n" << a + b << std::endl;
std::cout << "a - b =\n" << a - b << std::endl;
std::cout << "Doing a += b;" << std::endl;
a += b;
std::cout << "Now a =\n" << a << std::endl;
std::cout << "a^T= " << a.transpose() << std::endl;
std::cout << "a*b= " << a * b << std::endl;
Eigen::Vector3d v(1, 2, 3);
Eigen::Vector3d w(1, 0, 0);
std::cout << "-v + w - v =\n" << -v + w - v << std::endl;
std::cout << v << std::endl;
std::cout << v.transpose() << std::endl;
system("pause");
return 0;
}