Windows环境下配置Ceres(含Eigen、gflags、glog、merit、suitesparse)

1 配置环境与源代码包

环境

Windows 8.1企业版
Visual Studio 2013 专业版X64
Cmake GUI 3.13.0-rc1

Ceres-solver 1.14.0

下载地址:http://ceres-solver.org/installation.html

Eigen 3.3.5 release

下载地址:http://eigen.tuxfamily.org/index.php?title=Main_Page
著名的矩阵运算库。

gflags 2.2.1

下载地址:https://github.com/gflags/gflags
GFlags是Google开源的一个命令行flag(区别于参数)库。

glog

下载地址:https://github.com/google/glog
Google Glog是Google的一个开源库,用于实现应用级别的logging。它提供了一系列类似于C++流风格的logging API,以及一些预定义的宏。它有点类似于C里面的assert,但是比它具备更丰富的输出信息以及使用灵活性。

suitesparse-metis-for-windows-master

下载地址:https://github.com/jlblancoc/suitesparse-metis-for-windows
这个并不是必须安装的依赖库。但是如果装上将会提高Ceres对稀疏矩阵的计算性能,提供更多可用的优化算法。所以虽然加入这个库之后Ceres的安装过程会更加繁琐,但是仍然推荐安装。这个库的原生版本本身对Windows的支持不好,所以在Windows上要使用这个专门针对Windows的衍生版本。另外,这个库还存在一个名为CXSparse的简化版本。

配置准备

建立一个文件夹,如C:\VCProject\ceres,将下载的源代码包放在此文件夹中,然后把所有源代码解压放到对应的子文件夹内。另外为每个库按照“库名-build”的命名方式新建文件夹,用以存放生成后的工程文件,如图1-1所示。
图1-1
图1-1

2 Eigen配置

Eigen库本身是并不需要安装的,解压放在某文件夹内即可。为了方便管理,将这些库放在同一位置,如C:/Program Files。

1 . 启动CMake。
指定源代码位置为C:/VCProject/ceres/eigen-eigen,输出位置为C:/VCProject/ceres/eigen-build。编译平台根据系统环境选择“Visual Studio 12 2013 Win64”。
2 . 配置选项

取消所有的Test类项。
CMAKE_INSTALL_PREFIX = C:/Program Files/Eigen3

3.以管理员身份运行Visual Studio 2013,打开C:/VCProject/ceres/eigen-build/Eigen3.sln解决方案。分别以Debug和Release模式(x64)生成INSTALL项目以完成安装。

3 gflags配置

1.启动CMake。指定源代码位置为C:/VCProject/ceres/gflags-master,输出位置为C:/VCProject/ceres/gflags-build。编译平台根据系统环境选择“Visual Studio 12 2013 Win64”。
2.配置选项

取消选中BUILD_TESTING类项。
CMAKE_INSTALL_PREFIX = C:/Program Files/gflags
选中BUILD_SHARED_LIBS 以便生成.dll文件

3.以管理员身份运行Visual Studio 2013,打开C:/VCProject/ceres/gflags-build/gflags.sln解决方案。分别以Debug和Release模式(x64)生成INSTALL项目以完成安装。

4 glog配置

1.启动CMake。指定源代码位置为C:/VCProject/ceres/glog-master,输出位置为C:/VCProject/ceres/glog-build。编译平台根据系统环境选择“Visual Studio 12 2013 Win64”。
2.配置选项

取消选中BUILD_TESTING类项
CMAKE_INSTALL_PREFIX = C:/Program Files/glog
选中BUILD_SHARED_LIBS以便生成.dll文件,如果该项不存在通过“Add Entry”手动加入。
选中WITH_GFLAGS
gflags_DIR = C:/Program Files/gflags/lib/cmake/gflags

3.以管理员身份运行Visual Studio 2013,打开C:/VCProject/ceres/glog-build/glog.sln解决方案。分别以Debug和Release模式(x64)生成INSTALL项目以完成安装。

5 suitesparse-metis-for-windows-master配置

1.鉴于屡次配置出现的错误,首先将C:\VCProject\ceres\suitesparse-master\metis\programs\CMakeLists.txt做修改,即在图5-1中红色框线内的四行语句中,分别添加…/GKlib/getopt.c,修改后的结果如图5-1所示:
图5-1
图5-1
2.启动CMake,分别选择源码路径和待生成路径,如图5-2所示:
图5-2
图5-2
3.点击Configure,选择相应的编译器后,如图5-3所示:
图5-3
图5-3
4.配置相关项

取消勾选Group和Advanced
选中BUILD_METIS,用以构建metis库
选中BUILD_SHARED_LIBS,以便生成动态链接库文件
选中SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS
添加BLAS_LIBRARIES项(FILEPATH类)赋值:C:/VCProject/ceres/suitesparse-master/lapack_windows/x64/libblas.lib
添加LAPACK_LIBRARIES项(FILEPATH类)赋值 C:/Program C:/VCProject/ceres/suitesparse-master/lapack_windows/x64/liblapack.lib

再次点击Configure,并点击Generate,生成VS工程文件,如图5-4所示:
图5-4
图5-4
5.以管理员身份运行VisualStudio2013,打开刚生成的解决方案SuiteSparseProject.sln。分别以Debug和Release模式(x64)生成ALL_BUILD项目和INSTALL项目,分别发现没有错误并成功生成22个工程。生成时间上,Debug模式较Release模式更快一些。

6 Ceres配置

1.启动CMake,分别选择源码路径和待生成路径,如图6-1所示:
在这里插入图片描述
图6-1
2.点击Configure,选择相应的编译器后,如图6-2所示:
在这里插入图片描述
图6-2
3.配置相关项

配置AMD_INCLUDE_DIR、CAMD_INCLUDE_DIR、CCOLAMD_INCLUDE_DIR、CHOLMOD_INCLUDE_DIR、COLAMD_INCLUDE_DIR、SUITESPARSEQR__INCLUDE_DIR等6个头文件的路径以及相应的6个静态库的路径。
选中BUILD_SHARED_LIBS,以便生成动态链接库文件。
CMAKE_BUILD_TYPE 设为 Release。
选中CUSTOM_BLAS。
选中EIGENSPARSE。如果之前没有安装Eigen,只是解压。这里还需要手动配置EIGEN_INCLUDE_DIR项或Eigen3_DIR。
添加LAPACK_LIBRARIES项(FILEPATH类)赋值 C:/Program C:/VCProject/ceres/suitesparse-master/lapack_windows/x64/liblapack.lib。
GFLAGS和GLOG是否被选中,并且正确定位。如果安装在C盘Program FIles应该可以自动定位。
选中LAPACK_BLAS。
添加BLAS_LIBRARIES项(FILEPATH类)赋值:C:/VCProject/ceres/suitesparse-master/lapack_windows/x64/libblas.lib。
选中SUITESPARSE。
添加SUITESPARSE_CHECK_INCLUDE_DIRS项(PATH类)赋值 C:/VCProject/ceres/suitesparse-build/install/include ,提示suitesparse组件头文件位置。
添加SUITESPARSE_CHECK_LIBRARY_DIRS项(PATH类)赋值 C:/VCProject/ceres/suitesparse-build/install/lib,提示suitesparse组件库文件位置。
CMAKE_INSTALL_PREFIX 赋值 C:/Program Files/Ceres。

以上诸项的配置结果如图6-3所示:
在这里插入图片描述
图6-3
再次点击Configure,并点击Generate,生成VS工程文件,如图6-4、6-5所示:
在这里插入图片描述
图6-4
在这里插入图片描述
图6-5
5.以管理员身份运行VisualStudio2013,打开刚生成的解决方案Ceres.sln,切换编译器为Release模式,然后生成ALL_BUILD和INSTALL项目,完成Release模式的编译和安装过程。
切换到Debug模式。然后右键单击“ceres”项目->属性->C/C++ ->链接器->输入->附加依赖项。这里要注意属性管理也应设为Debug模式。
将以下7个Release版本的库改为Debug版本的库
C:\VCProject\ceres\suitesparse-build\install\lib\libspqr.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libcholmod.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libccolamd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libcamd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libcolamd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libamd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\suitesparseconfig.lib
调整为Debug版本库:
C:\VCProject\ceres\suitesparse-build\install\lib\libspqrd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libcholmodd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libccolamdd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libcamdd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libcolamdd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\libamdd.lib
C:\VCProject\ceres\suitesparse-build\install\lib\suitesparseconfigd.lib
然后生成ALL_BUILD和INSTALL项目,完成Debug模式的编译和安装过程。
注意:在Debug版本的ALL_BUILD生成时,会出现以下错误:
error C1128:字节数超过对象文件格式限制:请使用/bigobj进行编译
经排查,可通过打开nist工程属性页->C/C++ ->命令行->键入/bigobj编译器消除错误,如图6-6所示。
在这里插入图片描述
图6-6

7 测试

打开cmd,切换到ceres-build/bin路径下的Release和Debug下,然后运行分别运行helloworld.exe,如果看到convergence的话,即收敛,说明Release和Debug下的编译均成功,如图7-1所示。
在这里插入图片描述
图7-1

8 参考资料

https://blog.csdn.net/wzheng92/article/details/79504709?utm_source=blogxgwz3
https://blog.csdn.net/zhj_matlab/article/details/79077695
https://blog.csdn.net/yhz78321/article/details/79922592?utm_source=blogxgwz3

9 致谢

非常感谢上述所列的三位博主的分享,尤其是第一位博主对我成功配置Ceres库的贡献最大,本文的撰写框架也主要参考的是第一位博主的文章。在此向以上三位博主表达最诚挚的谢意。
我在我的硬软件环境下配置的过程中,遇到了我所查阅的资料所不能解决的问题,后在朋友的帮助之下得以解决,在此与大家共享,只希望能够给那些需要配置Ceres库的人提供一个快速配置的方案,以减少不必要时间上的浪费,毕竟学习Ceres里的知识才是关键。
逢山开路,遇水搭桥。这里,我所能解决的仅仅是对我所遇到的问题。对于那些未发现的问题,愿共探讨,以期近是。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页