因为公司业务发展需要,需要从linux转windows,这就意味着大概4年没有用过windows人需要把linux上的代码移植到windows,下面是在windows上编译colmap 和openmvg的一些workflow.
colmap 跨平台移植(vcpkg 和cmake 结合的方式)
1、需要手动安装的库
-
安装cmake ,https://cmake.org/download/ 下载安装即可
添加环境变量(cmake 安装位置),如下:
-
安装vs2019,https://visualstudio.microsoft.com/zh-hans/downloads/ 下载安装即可
添加环境变量如下:
D:\vs2019\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x64 的目的是配置cl.exe
-
安装qt5, https://download.qt.io/official_releases/qt/5.9/5.9.3/ 下载安装即可
添加环境变量如下:
cmake find Qt 的效果如下:
- 安装nvidia 驱动和cudn
根据自己的显卡查询驱动 https://www.nvidia.cn/geforce/drivers/,自己电脑是1660ti 安装完毕驱动,nvidia-smi 可以看到如下效果:
cudn 安装方式如https://blog.csdn.net/u010618587/article/details/82940528 ,不要安装全家桶,否则会cover 之前的驱动,安装完成后,按照博客方式添加环境变量并test cudn 是否正常运行成功,最后在命令行输入nvcc -V ,如下所示即可表明安装结束:
-
cgal 安装 下载链接 cgal
添加环境变量如下:
2、通过vcpkg 安装的库
git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.sh
- ceres solver,如果是手动安装的话,非常麻烦,所以这里通过vcpkg 方式来安装
vcpkg install ceres[suitesparse,cxsparse]:x64-windows --recurse
同时在vcpkg-master\packages\ceres_x64-windows\share\ceres路径下修改CeresConfig.cmake,将其改成如下(otherwise cmake 无法find ceres)
- vcpkg 安装freeimage 、glew 和boost,如下所示:
这里安装完毕后,需要去修改colmap 的CmakeLists,如下:(windows 太坑,区分大小写)
3 、cmake 编译colmap
进入build 文件夹下输入
cmake -G "Visual Studio 16 2019" -DCMAKE_TOOLCHAIN_FILE=D:\windows_colmap\colmap\vcpkg-master\scripts\buildsystems\vcpkg.cmake ..
cmake log 如下:
cmake 没有error ,最后一步就是vs打开build 文件夹下的COLMAP.sln文件,模式改成release,build solution 等待其编译即可,完成后如下(colmap.exe在build\src\exe\Release目录下):
openmvg 跨平台移植
-
vcpkg install openmvg[core,openmp]:x64-windows
遇到长时间不能下载的库,手动下载,放到vcpkg 文件夹中的download 里面 vcpkg 安装openmvg 和colmap 不同,colmap 会直接编译好生成可执行文件;openmvg只会生成静态库文件(lib文件)
-
cmake -G "Visual Studio 16 2019" - DCMAKE_TOOLCHAIN_FILE=D:\windows_colmap\colmap\vcpkg-master\scripts\buildsystems\vcpkg.cmake ../src/
在build 文件中执行上条cmake,会得到以下:
点击openMVG.sln 文件,打开vs2019,将debug 改成release ,执行build solution ,如下
生成的可执行文件路径和结果如下: