1 配置环境与源代码包

环境

Windows>=8.1
Visual Studio>=2013 专业版x64
Cmake GUI>=3.13

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

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
2.启动CMake,分别选择源码路径和待生成路径,如图5-2所示:

图5-2
3.点击Configure,选择相应的编译器后,如图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.以管理员身份运行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 测试

首先配置环境变量: 我的电脑->属性->更改设置->高级->环境变量->系统变量->Path->编辑。 在PATH中加入以下五个地址:

C:\Program Files\Ceres\bin
C:\Program Files\gflags\bin
C:\Program Files\glog\bin
C:\Program Files\suitesparse\bin
C:\Program Files\suitesparse\lib64\lapack_blas_windows

打开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里的知识才是关键。
逢山开路,遇水搭桥。这里,我所能解决的仅仅是对我所遇到的问题。对于那些未发现的问题,愿共探讨,以期近是。

Windows环境下配置Ceres(带suitesparse-metis)相关推荐

  1. Windows环境下配置环境变量

    安装好MySQL后,在Windows环境下配置环境变量 1)新建MYSQL_HOME系统变量 配置MySQL的安装路径:C:\Program Files\MySQL\MySQL Server 8.0 ...

  2. 如何在 Windows 环境下配置 PHP 开发运行环境

    我们都知道 PHP 运行需要的环境通常被称为 AMP. 其中 A 是 Apache 应用服务器,M 是 Mysql,P 就是 PHP 了. 实际上,很多人可能会使用一个测试 Mysql,但是针对一些小 ...

  3. 在windows环境下配置mongoDB集群

    在windows环境下配置mongoDB集群 mongodb官网 官网分片文档 首先感谢这次参考的文章: mongodb搭建高可用分片集群示例-天才卧龙 MongoDB高可用集群搭建示例-lizh 配 ...

  4. Windows环境下配置php的curl扩展

    在安装wordpress/ zen-cart / magento ,提示需要打开curl扩展,于是打开我的php.ini文件,找到";extension=php_curl.dll" ...

  5. 在windows环境下配置gitlab本地代码库

    题外话:最近在从事一个NLP算法课题.因为我负责的模块偏重弄理论,更倾向于做为团队竞争力的技术储备,故而与其他模块的交流并不多.一个人做久了,发现欠下的技术债越来越多,要是不好好整理代码,之后的窟窿可 ...

  6. Cython——Windows环境下配置faster-rcnn、yolo、ctpn等目标检测框架中Cython文件[cython_nms、bbox、gpu_nms]编译问题解决方案

    问题描述 AttributeError: 'MSVCCompiler' object has no attribute 'compiler_so' ValueError: Buffer dtype m ...

  7. Tomcat之Windows环境下配置多个服务器

    在应对多项目多端口的情况配置一个服务器是远不能满足开发条件的.例如微信公众号回调域名只接受80端口,而其他项目一般为默认的8080或者自定义的其他的端口. 废话多说,直入主题 准备条件:tomcat文 ...

  8. easy php moodle,Windows 环境下配置easyphp+moodle方法及设置外部IP访问方法

    安装有很多方法,最简单的方法就是easyphp+moodle,具体方法如下: 1.准备好安装必须的软件,包括easyphp和moodle.easyphp到http://easyphp.org/下载,m ...

  9. 【时序数据库InfluxDB】Windows环境下配置InfluxDB+数据可视化,以及使用 C#进行简单操作的代码实例...

    前言:如题.直接上手撸,附带各种截图,就不做介绍了. 1.influxDB的官网下载地址  https://portal.influxdata.com/downloads/ 打开以后,如下图所示,可以 ...

最新文章

  1. Fabric源码分析-共识模块
  2. 3-18函数——作用域的查找空间
  3. MATLAB仿真TSC在哪里找,-bash:tsc:找不到命令
  4. java的基础语法和数据类型,IDEA
  5. html 像素跟百分比,html – 将百分比宽度与边距(以像素为单位)组合起来
  6. 终于把英文版操作系统中文乱码问题解决了
  7. 请阐述调用Activity有哪几种方法,并写出相关的Java代码
  8. 【分享】VNR翻译日语游戏汉化简易图解教材
  9. Eclipse中离线安装ADT插件详细教程
  10. TCP安全测试指南-魔兽3找联机0day
  11. zebra 斑马打印机 打印图片
  12. JAVA - 银行卡认证
  13. Study《win7安装ODTwithODAC》
  14. UltraEdit 多词搜索
  15. 2022化工自动化控制仪表题库模拟考试平台操作
  16. 原理解析!腾讯3轮面试都问了Android事件分发,已整理成文档
  17. apicloud影视解析APP源码 HTML
  18. 10款不可多得的精美png图标
  19. 《520七夕情人节表白礼物》❤520表白星空漫漫3D相册❤(HTML+CSS+JavaScript)
  20. 制造业数字化转型难点及推进路径

热门文章

  1. python静态代码检查
  2. Android开发之LitePal数据库的使用(参考于《Android 第一行代码》)
  3. 基于antd pro框架,配置接口apiUrl前缀
  4. Android开发者编写自己的API接口(上)
  5. windows下之定时执行bat脚本
  6. 李宏毅2021/2022春机器学习课程(机器学习基本概念简介)
  7. centOS关机重启,保存内存中数据
  8. 请你谈谈如何破坏双亲委派模型?
  9. WIFI定位原理分析
  10. [Linux字符驱动] DIDO 74HC595实现遥控遥信功能