ElasticFusion之Eigen+SuiteSparce编译

ElasticFusion之Eigen+SuiteSparce编译

最近在看ElasticFusion的文章,打算在Windows平台上进行复现,由于涉及到众多软件,故在此记录一下编译过程,以备后续升级软件使用。这篇主要记录Eigen和SuiteSparse的编译,后续会把整个过程记录下来。

1 软件下载与安装

1.1 Microsoft Visual Studio 2013

系统平台为Window 10,VS为Visual Studio 2013 Update 5。其他版本应该也能够使用,但为了能够尽快复现,这里使用ElasticFusion推荐的版本,以后会测试Visual Studio 2015和Visual Studio 2017。

1.2 CMake 3.7.2

下载并安装CMake,官网地址为官网,这里下载地址为CMake 3.7.2-win64-x64

1.3 Eigen 3.3.3

下载Eigen,官网地址为官网,这里下载地址为Eigen 3.3.3

1.4 SuiteSparse

下载最新版SuiteSparse,官网地址为官网,下载相应的ZIP压缩包。

2 SuiteSparse编译

详细步骤可参见网址,这里只做简要介绍。

2.1 SuiteSparse解压缩

将下载下来的SuiteSparse解压缩到文件夹,并重命名为SuiteSparse-Metis-VS2013,我这里的完整路径为D:\Source\ElasticFusion\SuiteSparse-Metis-VS2013,以下简称SP_ROOT。打开SP_ROOT/metis/CMakeLists.txt,在行

project(METIS)

后加上命令

cmake_policy(SET CMP0022 NEW)

修改后文件如下:

cmake_minimum_required(VERSION 2.8)
project(METIS)
cmake_policy(SET CMP0022 NEW)
set(GKLIB_PATH "GKlib" CACHE PATH "path to GKlib")
set(SHARED FALSE CACHE BOOL "build a shared library")

if(MSVC)
  set(METIS_INSTALL FALSE)
else()
  set(METIS_INSTALL TRUE)
endif()

# Configure libmetis library.
if(SHARED)
  set(METIS_LIBRARY_TYPE SHARED)
else()
  set(METIS_LIBRARY_TYPE STATIC)
endif(SHARED)

include(${GKLIB_PATH}/GKlibSystem.cmake)
# Add include directories.
include_directories(${GKLIB_PATH})
include_directories(include)
# Recursively look for CMakeLists.txt in subdirs.
add_subdirectory("include")
add_subdirectory("libmetis")
add_subdirectory("programs")

2.2 CMake运行

  • Where is the source code设置为SP_ROOT
  • Where to build the binaries设置为 SP_ROOT/Build
  • 按“Configure”,弹出的窗口选择Visual Studio 12 2013 Win64,需要选择Win64版
  • 按“Generate”

2.3 编译和安装

在Visual Studio,打开SuiteSparseProject.sln,并且建立Debug 和Release两种模式下的INSTALL 工程(设为启动项目)。SuiteSparseConfig.cmake应该位于install路径下,它将用于你的项目正确地连接到SuiteSparse。

3 测试

3.1 建立测试工程,源码如下

#include <iostream>  
#include "Eigen/Eigen"  
#include "Eigen/SPQRSupport"  
using namespace Eigen ;  
int main ( ) {  

    SparseMatrix < double > A ( 4 , 4 ) ;  
    std :: vector < Triplet < double > > triplets ;  

    // 初始化非零元素  
    int r [ 3 ] = { 0 , 1 , 2 } ;  
    int c [ 3 ] = { 1 , 2 , 2 } ;  
    double val [ 3 ] = { 6.1 , 7.2 , 8.3 } ;  
    for ( int i = 0 ; i < 3 ; ++ i )  
        triplets . push_back( Triplet < double >(r [ i ] , c [ i ] , val [ i ]) ) ;  

    // 初始化稀疏矩阵  
    A . setFromTriplets ( triplets . begin ( ) , triplets . end ( ) ) ;  
    std :: cout << "A = \n" << A << std :: endl ;  

    // 一个QR分解的实例  
    SPQR < SparseMatrix < double > > qr ;  
    // 计算分解  
    qr . compute ( A ) ;  
    // 求一个A x = b  
    Vector4d b ( 1 , 2 , 3 , 4 ) ;  
    Vector4d x = qr . solve ( b ) ;  
    std :: cout << "x = \n" << x ;  
    std :: cout << "A x = \n" << A * x ;  

    return 0 ;  
}  

3.2 设置包含文件和库文件

(1)附加包含目录

..\..\Eigen
..\..\SuiteSparse-Metis-VS2013\build\install\include\
..\..\SuiteSparse-Metis-VS2013\build\install\include\suitesparse

(2)附加库目录

..\..\SuiteSparse-Metis-VS2013\build\install\lib64
..\..\SuiteSparse-Metis-VS2013\build\install\lib\lapack_blas_windows
..\..\SuiteSparse-Metis-VS2013\build\install\lib

(3)附加依赖项
Debug模式下添加

libamdd.lib
libbtfd.lib
libcamdd.lib
libccolamdd.lib
libcholmodd.lib
libcolamdd.lib
libcxsparsed.lib
libklud.lib
libldld.lib
libspqrd.lib
libumfpackd.lib
suitesparseconfigd.lib
libblas.lib
liblapack.lib
metisd.lib

Release模式下添加

libamd.lib
libbtf.lib
libcamd.lib
libccolamd.lib
libcholmod.lib
libcolamd.lib
libcxsparse.lib
libklu.lib
libldl.lib
libspqr.lib
metis.lib
suitesparseconfig.lib
libblas.lib
liblapack.lib

在生成的Debug文件夹下加入SP_ROOT\build\install\lib\lapack_blas_windows中的dll

libblas.dll
libgcc_s_dw2-1.dll
libgfortran-3.dll
liblapack.dll
libquadmath-0.dll

3.3 运行

进行如上设置后,程序即可正常运行,结果如下:
Eigen

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装metis_Eigensuitesparse的步骤如下: 1. 安装Visual Studio 2015或以上版本,可以从Microsoft官网下载。 2. 下载metis的Windows二进制文件,可以从官网https://github.com/aydin-demircioglu/metis-windows/releases下载。 3. 解压缩Metis Windows二进制文件,并将其放在一个目录下。 4. 下载suitesparse的Windows二进制文件,可以从官网http://faculty.cse.tamu.edu/davis/suitesparse.html下载。 5. 解压缩Suitesparse Windows二进制文件,并将其放在一个目录下。 6. 下载Eigen的源代码,可以从官网http://eigen.tuxfamily.org/index.php?title=Main_Page下载。 7. 解压缩Eigen源代码,并将其放在一个目录下。 8. 打开Visual Studio,并创建一个新的空项目。 9. 将Eigen源代码目录中的“Eigen”文件夹复制到Visual Studio项目的目录中。 10. 在Visual Studio项目中添加Metis和Suitesparse的头文件和库文件路径,具体步骤如下: a. 在Visual Studio项目中右键单击“项目”并选择“属性”。 b. 选择“VC++目录”选项卡。 c. 在“包含目录”中添加Metis和Suitesparse的头文件路径。 d. 在“库目录”中添加Metis和Suitesparse的库文件路径。 11. 在Visual Studio项目中添加Metis和Suitesparse的库文件,具体步骤如下: a. 在Visual Studio项目中右键单击“项目”并选择“属性”。 b. 选择“链接器”选项卡。 c. 在“输入”中添加Metis和Suitesparse的库文件。 12. 现在可以在Visual Studio项目中使用Metis和Suitesparse库了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值