wondows10使用vcpkg编译colmap的教程(带suitesparse)

编译环境
Windows10+cmake+vs2017+cuda10.1+qt5.12.9-windows-x86+boost1.64.0+cgal4.11+ceres+colmap3.6-master
(cmake、vs2017、cuda、qt都很好安装,直接进官网找到版本安装就行了。ceres使用vcpkg安装,用的vcpkg默认的版本。)

colmap下载地址https://github.com/colmap/colmap,colmap官方文档https://colmap.github.io/install.html。

boost安装教程
1)打开cmd,进入boost文件夹,有一个批处理文件bootstrap.bat。
2)在cmd输入命令bootstrap.bat,运行结束会出现b2.exe或者bjam.exe(没区别,作者是两个都生成了)。
3)然后在cmd输入命令bjam.exe。会出现一个文件夹lib64-msvc,里面装着boost的各种库。
ps:这里可能在运行了bjam之后没有出现这个文件夹(作者本人就是),重新输入命令bjam install --toolset=msvc-14.1 address-model=64 --prefix=“D:\remote-sensing\colmap\boost_1_64_0\lib64” link=static runtime-link=shared threading=multi debug release。(这里路径改成自己对应的路径)生成lib64文件夹,lib64->lib中装着boost的库。

cgal安装教程
在cgal下载了安装包,安装完成之后,需要使用cmake对cgal进行编译。
1)打开cmake-gui,进入cgal所在的文件夹(如下图)。注意,cgal本身是没有build文件夹的,cmake编译过程中会自动给你创建一个。
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第1张图片
2)路径设置好之后,点击configure,然后在里面选择对应的vs版本,点击finish,cmake开始自动编译,编译完成后显示configure done。(其中有一项CMAKE_INSTALL_PREFIX,是编译完成后文件的安装位置。)再点击generate,显示generate done。此时会在刚刚创建的build文件夹里生成cgal.sln文件。
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第2张图片

wondows10使用vcpkg编译colmap的教程(带suitesparse)_第3张图片
3)使用vs2017打开cgal.sln文件。分别在Debug模式和release模式中把All BUILD和INSTALL都生成一边,全部生成成功,cgal就编译完成了。wondows10使用vcpkg编译colmap的教程(带suitesparse)_第4张图片
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第5张图片

添加环境变量
全部编译结束之后,添加一些环境变量,后面编译colmap的时候会用到。(具体哪些会被用到我没去看,无脑加了一通)
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第6张图片
在这里插入图片描述

ceres安装教程
之前自己手动编译ceres,最后生成colmap的时候报错了,显示colmap_cuda无法找到文件,没找到解决方法,所以转用vcpkg编译ceres。
在Power Shell中输入命令vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse。vcpkg会自动去网站上下载包,帮你解压、安装、编译(vcpkg自带cmake)。
遇到包下载不下来,复制vcpkg显示的链接,自己在浏览器中下载,下载完成后,找到vcpkg->downloads->temp文件夹。里面有一个临时文件,将自己下载下来的包名字改得和这个临时文件一样。然后把自己下载下来的包复制到vcpkg->downloads。重新运行命令vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse,会直接编译这个包。

colmap安装教程
在以上包全部安装完成之后,开始编译colmap。
1)使用cmake编译colmap,步骤和编译cgal一样。在编译过程中会提示找不到一些库的路径,一个一个添加进去就行,下面是作者编译colmap的界面,给大家参考一下。
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第7张图片
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第8张图片
2)在cmake编译的过程中,会显示找不到BLAS_LIBRARIES和LAPACK API,并且下面的项目里没有这两项,点击Add Entry,自己添加进去。其中BLAS_LIBRARIES是在suitesparse文件夹下的lib文件夹中。(作者找了好久)
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第9张图片
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第10张图片
3)在所有路径都找到之后显示configure done,不要急着generate,找到一下两项,第一项没有路径,将它的路径设置的和第二项一样。再次configure,然后generate。至此,cmake编译完成,build文件夹中出现colmap.sln。(因为作者第一次编译成功之后,运行colmap稠密重建显示cuda出错,所以这里添加了一步,之后再未出问题,但不清楚是否和这一步有关)
在这里插入图片描述
4)使用vs打开colmap.sln,右键colmap_exe->设为启动项目。邮件colmap->C/C+±>命令行,在其中加入/bigobj。
wondows10使用vcpkg编译colmap的教程(带suitesparse)_第11张图片wondows10使用vcpkg编译colmap的教程(带suitesparse)_第12张图片
5)分别在debug和release模式下生成ALL_BUILD和INSTALL。生成成功,会在之前选择的CMAKE_INSTALL_PREFIX路径中生成COLMAP文件夹。文件夹中有一个批处理文件COLMAP.bat,双击,会提示找不到一些dll文件,去自己的vcpkg->packages文件夹中一个一个拷贝到COLMAP文件夹下,再双击COLMAP,bat,生成成功,出现colmap界面。

结语
其实vcpkg是可以直接编译colmap的,但是boost那边不知道出了什么问题,下载不了东西,作者的boost还是别人给的,只能退而求其次,使用vcpkg编译ceres,然后自己用cmake编译colmap。
colmap的编译很坑,作者最开始用python编译,结果有些库下载不下来,然后使用cmake编译,结果生成colmap.sln的时候一直报错,先是报错无法解析一些外部链接,发现是eigen和ceres版本问题,更换版本之后又报错,无法找到文件。更换gflags的版本也解决不了这个问题,作者觉得可能是编译ceres的过程中出现了问题,但找不到原因,就改用了vcpkg编译ceres,终于编译成功啦。希望这篇文章也对各位小伙伴有所帮助。

最近boost官网好像下不了包,给大家附上我的包。
boost_1_64_0 https://download.csdn.net/download/qq_39003069/13078227

你可能感兴趣的:(wondows10使用vcpkg编译colmap的教程(带suitesparse))