win10+vs2015配置suitesparse1.3.0

配置suitesparse是配置g2o的前提,我参考了这篇文章进行配置:
https://blog.csdn.net/xiamentingtao/article/details/50100549
但是这里边有点小错误,我按照里面的步骤再叙述一遍,小错误我会用***粗斜体***指出。
1、下载camke,我用的是cmake3.10.1
2、下载suitesparse1.3.0链接:https://pan.baidu.com/s/1HY2svJKr5dWJHIVmCTHlOQ 提取码:2m15
下载Eigen,直接解压,如下:
在这里插入图片描述
3、将下载下来的安装包解压,我是解压后放在这个位置了,这里暂称E:\g2o\suitesparse-metis-for-windows-1.3.0这个路径为SP_ROOT,并且在SP_ROOT里面新建一个build文件夹备用
在这里插入图片描述
4、打开 SP_ROOT/metis/CMakeLists.txt,在行project(METIS)后面加上命令 cmake_policy(SET CMP0022 NEW)
在这里插入图片描述
5、运行 CMake (cmake-gui),
• 设置"Sourcecode"为SP_ROOT
• 设置"Build" 路径为SP_ROOT/build
• 按 “Configure”。
• 然后你会发现有很多红的地方,不要管,再"Configure",其中,要注意,HAVE_COMPLEX 不要勾选(这是参考博客的作者说的)
• 按 “Generate” ,成功生成,如下:
在这里插入图片描述

6、点击cmake里的Open project,由vs2015打开工程
在这里插入图片描述
设置成Debug x64和release x64模式分别生成工程,生成步骤:(1)右击ALL_BUILD->设为启动项->生成 (2)右击INSTALL->设为启动项->生成

7、配置Eigen和Suitesparse
新建一个工程,项目->属性中配置,
Eigen我在好久之前就已经配置过了,具体步骤忘了,读者可以自行去网上找,很简单的,没难度。
重点是配置SuiteSparse,步骤如下:
(1)C/C+±> 常规->附加包含目录
在这里插入图片描述
(2)链接器->常规->附加库目录
这里的目录跟参考博客作者的叙述略有不同
在这里插入图片描述
(3)添加链接器->输入->附加依赖项

E:\g2o\suitesparse-metis-for-windows-1.3.0\build\lib\Debug
E:\g2o\suitesparse-metis-for-windows-1.3.0\build\install\lib64
E:\g2o\suitesparse-metis-for-windows-1.3.0\build\install\lib64\lapack_blas_windows
里面debug模式的静态库(即以d.lib结尾)的文件名都提取出来,由于我这里配置的是debug模式,所以只提取了debug模式的静态库文件名
在这里插入图片描述
libamdd.lib
libbtfd.lib
libcamdd.lib
libccolamdd.lib
libcholmodd.lib
libcolamdd.lib
libcxsparsed.lib
libklud.lib
libldld.lib
libspqrd.lib
libumfpackd.lib
metisd.lib
suitesparseconfigd.lib
libamdd.lib
libbtfd.lib
libcamdd.lib
libccolamdd.lib
libcholmodd.lib
libcolamdd.lib
libcxsparsed.lib
libklud.lib
libldld.lib
libspqrd.lib
libumfpackd.lib
metisd.lib
suitesparseconfigd.lib
libblas.lib
liblapack.lib
(4)在链接器->输入->附加依赖项里输入上述静态库名称
(5)最后在生成的debug文件下加入如下dll,
libblas.dll
libgcc_s_dw2-1.dll
libgfortran-3.dll
liblapack.dll
libquadmath-0.dll
可以在SP_ROOT\build\install\lib\lapack_blas_windows中找到,复制即可。
在这里插入图片描述
(6)在工程里运行如下测试代码:

#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 ;
}

结果如下
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值