Win10+vs2019配置Ceres Solver,含Eigen,gflags,glog,suitsparse(亲测可用)

目录

1.环境

2.环境库下载

2.1 Ceres Solver2.0.0

2.2 Eigen3.3.8

2.3 gflags

2.4 glog

2.5 suitsparse-metis-for-windows

3.环境库配置

3.1 Eigen编译

3.2 gflags编译

3.3 glog编译

3.4 Suitesparse编译

3.5 Ceres Solver编译

4.环境变量配置

5.VS2019环境配置

6.测试

6.1 helloworld测试

6.2 bundle_adjuster测试

7.参考博客


亲测可用 2023-04-27。

1.环境

  • Windows10
  • Visual Studio 2019 Community
  • CMake GUI 3.19.8

2.环境库下载

2.1 Ceres Solver2.0.0

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

2.2 Eigen3.3.9

Eigen(开源库)是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。

下载地址http://eigen.tuxfamily.org/index.php?title=Main_Page

2.3 gflags

gflags是google开源的一种命令行解析工具,主要用于解析用命令行执行可执行文件时传入的参数。

下载地址https://github.com/gflags/gflags

2.4 glog

glog是google提供的轻量级日志库,它提供了基于C++样式流和各种帮助程序宏的日志记录API,你可以很简单的将信息传输到LOG来记录消息。

下载地址https://github.com/google/glog

2.5 suitsparse-metis-for-windows

此库非必须安装。但安装后可以提高Ceres对稀疏矩阵的计算性能,提供更多的优化算法,此库安装后会使Ceres库的安装过程变得繁琐,但仍建议安装。这个库的原生版本本身对Windows的支持不好,所以在Windows上要使用这个专门针对Windows的衍生版本。另外,这个库还存在一个名为CXSparse的简化版本。

下载地址https://github.com/jlblancoc/suitesparse-metis-for-windows

3.环境库配置

首先建立一个文件夹,建议除C盘的其他盘,例如:E:\ceres_install,将压缩包解压到该文件夹内,另外为每个库按照“库名-build”的命名方式新建文件夹,用以存放生成后的工程文件,如下图所示(请忽略图中opencv4.5路径,根据自身情况而定,此次仅作演示):

并在该文件中新建一个Install文件夹,用于存储各依赖库的.h\.lib\.dll等文件,Install文件夹中新建五个文件夹如下:

3.1 Eigen编译

启动Cmake,添加源码位置和输出位置的地址,如下图所示:

点击configuer,选择vs2019,x64,在配置选项中

  • 取消选中BUILD_TESTING
  • 取消选中EIGEN_SPLIT_LARGE_TSETS
  • CMAKE_INSTALL_PREFIX=E:\Ceres_Install\install\eigen(是install文件夹中的eigen文件夹)

几乎不选中任何选项,配置图如下:

然后再次点击configuer,会出现如下红色警告,

该Warning就是提示你注意Cmake版本更新:Cmake的版本号高于CMakeLists.txt中设置的最低版本号,可能会与旧版本不兼容,如果低于指定版本会出现报错,需要更新Cmake的版本。经过测试如果版本高于指定版本号(2.8.12)则没有问题(暂时未发现)。也可以在CMakeLists.txt中更改版本号,本人以为最好不要这么做,有好奇者可以尝试一下。CMakeLists.txt地址在解压后的eigen-3.3.8中。

然后点击Generate->Open Project,此时用VS2019打开eigen.sln,分别用Release X64和Debug X64下生成INSTALL。

生成全部成功则表明eigen库安装成功,检查E:\opencv4.5\cere_install\install\eigen中是否包含如下俩个文件夹:

3.2 gflags编译

在Cmake中指定gflags源码地址:E:\opencv4.5\cere_install\gflags-master,并指定输出地址:E:\opencv4.5\cere_install\gflags_build,点击configure,选择vs2019 X64,在配置选项中

  • 取消选中BUILD_TESTING
  • CMAKE_INSTALL_PREFIX=E:\opencv4.5\cere_install\install\gflags
  • 选中BUILD_SHARED_LIBS 以便生成.dll文件

选项配置结果如下图所示:(不存在的选项可通过“Add Entry”进行添加)

然后再次点击Configure->Generate->Open Project,打开刚生成的解决方案gflags.sln,在VS2019分别在Release x64和Debug x64下生成ALL_BUILD和INSTALL项目。

3.3 glog编译

在Cmake中指定gflags源码地址:E:\opencv4.5\cere_install\glog-master,并指定输出地址:E:\opencv4.5\cere_install\glog_build,点击configure,选择vs2019 X64,在配置选项中

  • 取消选中BUILD_TESTING
  • CMAKE_INSTALL_PREFIX = E:\opencv4.5\cere_install\install\glog
  • 选中BUILD_SHARED_LIBS 以便生成.dll文件(如果没有可进行添加,添加时type选择为bool)
  • 选中WITH_GFLAGS
  • gflags_DIR = E:\opencv4.5\cere_install/install/gflags\lib\cmake\gflags(该项地址一般会自动定位,检查一下以确保正确,没有的话可自行添加)

选项配置结果如下图所示:

然后再次点击Configure->Generate->Open Project,打开刚生成的解决方案glog.sln,在VS2019分别在Release x64和Debug x64下生成ALL_BUILD和INSTALL项目。

3.4 Suitesparse编译

在Cmake中指定gflags源码地址:E:\opencv4.5\cere_install\suitesparse-master,并指定输出地址:E:\opencv4.5\cere_install\suitesparse_build,点击configure,选择vs2019 X64,在配置选项中

  • BUILD_METIS可以不选
  • 取消选中HAVE_COMPLEX,否则也会有很多莫名其妙的错误,这些错误和平台的兼容性有关
  • CMAKE_INSTALL_PREFIX = E:\opencv4.5\cere_install\install\suitesparse
  • 选中BUILD_SHARED_LIBS 以便生成.dll文件
  • 先取消选中SHARED。如果选中会报错,宣称缺少一系列.lib文件。
  • OPENMP根据需要设置,此处不做更改

选项配置结果如下图所示:

configure->generate->open project,打开刚生成的对应解决方案SuiteSparseProject.sln。分别以Debug和Release模式(x64)生成ALL_BUILD项目和INSTALL项目 。

生成成功后(应该Debug有14个,Relsease有15个项目,成功即可),然后再选中SHARED项,其他项不变,再次点击generate。之后用Visual Studio重新打开此解决方案。然后此时重新以Debug和Release模式(x64)分别再次生成ALL_BUILD项目和INSTALL项目。因为再上一过程中.lib文件已经被生成并且安装(上一轮编译一定要生成INSTALL),所以这时不会再报错说缺少.lib文件了。此时四个依赖库都安装完毕。

3.5 Ceres Solver编译

(1)如果没有编译Suitesparse,ceres的编译可参考如下博客:http://www.mamicode.com/info-detail-2688186.html

(2)若安装了Suitesparse,可参考如下流程进行编译。

在Cmake中指定gflags源码地址:E:\opencv4.5\cere_install\ceres-solver-2.0.0,并指定输出地址:E:\opencv4.5\cere_install\ceres_build,点击configure,选择vs2019 X64,在配置选项中

  • 取消选中BUILD_EXAMPLES
  • 取消选中BUILD_TESTING
  • 选中BUILD_SHARED_LIBS,以便生成动态链接库文件
  • 选中CUSTOM_BLAS
  • 选中LAPACK
  • 选中GFLAGS、GLOG,GLOG若没有可通过“Add Entry”进行添加,type选择bool,查看gflags_DIR和glog_DIR是否正确定位:gflags_DIR=E:/opencv4.5/cere_install/install/gflags/lib/cmake/gflags,glog_DIR=E:/opencv4.5/cere_install/glog_build。点击“Advanced”可在列表最后查看,如下图所示:

  • 添加BLAS_LIBRARIES项,type为FILEPATH类,赋值 E:/opencv4.5/cere_install/suitesparse-master/lapack_windows/x64/libblas.lib
  • 添加LAPACK_LIBRARIES项,type为FILEPATH类,赋值 E:/opencv4.5/cere_install/suitesparse-master/lapack_windows/x64/liblapack.lib
  • 选中EIGENSPARSE
  • CMAKE_BUILD_TYPE 设为 Release
  • 选中CXSPARSE
  • 检查地址Eigen3_DIR=E:/opencv4.5/cere_install/eigen_build
  • 选中SUITESPARSE,注意这一选项会自动取消选中
  • CMAKE_INSTALL_PREFIX = E:/opencv4.5/cere_install/install/ceres

选项配置结果如下图所示:

然后检查AMD、BLAS、CAMD、CCOLAMD、CHOLMOD、CXSPARSE、COLAMD、SUITESPARSE、SUITESPARSEQR等9个头文件的路径以及相应的9个静态库的路径是否正确,若不正确,需要手动配置。

勾选Grouped和Advanced可定位到相应的位置:

点击Configure出现如下红色字样为正常情况,不必担心:

点击Generate,生成VS工程文件,打开Ceres.sln,切换编译器为Release模式,然后生成ALL_BUILD和INSTALL项目,完成Release模式的编译和安装过程。

切换到Debug模式。然后右键单击“ceres”项目->属性 ->链接器->输入->附加依赖项,注意配置要更改为Debug,将以下红框中7个Release版本的库

更改为Debug版本的库,例如libspqr->libspqrd。如下图所示:

然后用Debug X64再次编译ALL_BUILD和INSTALL项目。

4.环境变量配置

我的电脑->属性->高级系统设置->环境变量->系统变量->Path->编辑。注意设置完环境变量之后需要重启Visual Studio以生效。在path中添加以下地址:

安装完成。

5.VS2019环境配置

打开VS2019,新建工程文件,依次点击属性管理器->Debug|x64->添加新项目属性表

点击添加,双击点开刚才新建的属性表,设置属性表属性。我这里属性表命名为:CerePropertySheetd

设置包含目录 :如图,点击VC++目录下的包含目录进行编辑。输入之后点击确定。

同样的方法添加库目录:

点击C/C++>附加包含目录,添加E:\opencv4.5\cere_install\eigen-3.3.8

设置附加依赖项。点击链接器下的输入,找到右边的附加依赖项进行编辑。如图。输入之后点击确定。

如需要Release型的附加依赖项,建议专门为Release新建一个属性表,新建方法及设置同上,只需在附加依赖项做如下更改:

完成之后点击属性页上的确定,属性表属性设置完成。

以后新建工程时只需要将这两个属性表添加到属性管理器中即可,避免每次环境配置的麻烦。

6.测试

在该路径下E:\opencv4.5\cere_install\ceres-solver-2.0.0\examples有许多例子可供测试。下述为helloworld.cc和bundle_adjuster.cc的测试过程,bundle_adjuster.cc运行成功则说明suitesparse安装成功。

新建VS2019工程项目,在属性管理器中分别添加刚刚新建的Debug和Releae型的属性表。注意:添加到X64中。

将该路径下E:\opencv4.5\cere_install\ceres-solver-2.0.0\examples的如下项目copy到所建VS工程路径下:

所需的测试数据集可在官网下载:http://grail.cs.washington.edu/projects/bal/final.html

将下载好的数据集也放到刚刚新建的工程路径下,方便后续头文件和源文件的添加。

6.1 helloworld测试

打开新建的VS工程,本文命名项目为ceresolvertest,在解决方案资源管理器中右击源文件选择添加现有项,添加helloworld.cc,分别在Debug和Release版本下进行测试。如发现有以下错误信息:

双击错误信息,跳转到jet.h,在其中添加头文件#include “corecrt_math_defines.h”,即可成功运行。

成功运行结果如下:

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装Ceres 2.0.0版本在Ubuntu 22.04上需要进行以下步骤: 1. 首先,你需要卸载之前的Ceres版本。你可以通过删除"/usr/local/lib/"中的文件以及"/usr/local/include/ceres/"中的头文件来完成卸载。可以使用以下命令进行删除: ``` sudo rm -r /usr/local/lib/cmake/Ceres sudo rm -rf /usr/local/include/ceres sudo rm /usr/local/lib/libceres.a ``` 2. 安装Ceres所需的依赖。你可以使用以下命令来安装相关依赖: ``` sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev ``` 3. 下载Ceres 2.0.0版本的源代码并解压缩。 4. 进入解压后的Ceres目录,并创建一个名为"build"的文件夹。 5. 进入"build"文件夹,并运行以下命令来配置Ceres的构建过程: ``` cmake .. ``` 6. 接下来,运行以下命令进行编译: ``` make ``` 7. 最后,运行以下命令来安装Ceres: ``` sudo make install ``` 这样,你就成功安装了Ceres 2.0.0版本在Ubuntu 22.04上。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ubuntu安装ceres、pyceres及对应报错解决](https://blog.csdn.net/weixin_41169280/article/details/127559735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Ubuntu22.04 安装ceres-solver,cmake编译报错有tbb_stddef.h](https://blog.csdn.net/qq_45999722/article/details/129267563)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值