vs2022+win10+colmap3.9-3.11教程

1、cmake安装

2、VS2019(我用的是vs2022)环境变量

作者写了这句话:(下面截图)这个cl.exe是编译器版本的意思  

详解 Visual Studio、MSVC、编译器版本,看完就不再困惑啦!_msvc版本-优快云博客 (详细介绍编辑器相关知识)

2.1、VS修改英文环境(方便vcpkg)(其实可以不用  中文最后也能用vcpkg)

3:nvidia和cudn

输入Nvidia-smi和nvcc -V看看就行

这里一定要和vs的版本对应上,详细请往下翻看,比如cuda12.5支持vs2022的17.12

4:cgal(可以不用手动安装,这步完全跳过)

5:vcpkg下载安装使用

1.下载安装:  git clone GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS 

2.运行bootstrap-vcpkg.bat下载vcpkg.exe

3、运行验证:在当前页面下 按住shift打开powershell终端  

然后输入 ./vcpkg(也可以直接vcpkg)(如果是cmd就是输入vcpkg cmd不要./)

4、进行测试,是否成功安装(安装OPENSSL测试)

./vcpkg install openssl --triplet=x64-windows

这里是下载包的地址

我们还可以将其添加到环境下,这样就不用来到这里才能vcpkg了 直接cmd桌面就行

现在有问题 我写这样的代码,是不可以运行的,因此需要对所有以后的代码进行修改。

vcpkg install zlib:x64-windows    #  不可以

vcpkg install zlib --triplet=x64-windows   # 可以

这个问题最后是这样解决的,这是因为在系统环境变量中,我写错了文字:

我在系统变量里改了名字,为

VCPKG_DEFAULT_TRIPLET   这个值是x64-windows

而我写成了x64_windows

因此才会有如下错误:

原因就是当时写为了x64_windows,所以才给我一直报错

补充知识:

①Vcpkg可以用国内源,但是我没用,我有vpn哈哈哈,不过不连接网络似乎也可以

②用“vcpkg install name(包名)”默认下载的是x86包,在x64系统上不能运行,因此需要三元指定--triplet=x64-windows

③查看已经下载的库   vcpkg list

④搜索网上的这个库 这样还可以看看版本号  比如下面的vcpkg search opencv

那么怎么指定呢  这个详细见vcpkg专题

⑤删除已经下载的库   vcpkg remove xx --triplet=x64-windows   还得加上三元,要不然又报错,然后这个命令删除的时候 由于很多库之间有依赖 因此这样的话其实会报错不让你删掉,报错如下:

因此我们需要改为   vcpkg remove zlib --triplet=x64-windows --recurse

加上--recurse 选项来递归删除这些库及其依赖项,但实际上我们可能是只想删这个,因此其他的我还要下载回来,比如opencv4,所以删除了包之后,我需要再下回来

vcpkg install libpng opencv4 tiff --triplet=x64-windows

这种方法可以让你删除 zlib,而不会影响其他已安装的库(remove的移除也只是移除了二进制程序库而已,源码包和解压缩的源码并没有删除 因此上图重新安装非常快)

5.5在vs中使用vcpkg

1、首先建议每次使用vcpkg都先初始化一下(作为更新):./bootstrap-vcpkg.bat

5:vcpkg安装集成好的colmap

(1)vcpkg install cgal:x64-windows

(2)vcpkg install freeimage:x64-windows

(3)vcpkg install glew:x64-windows

(4)vcpkg install boost:x64-windows

(5)vcpkg install ceres[suitesparse,cxsparse]:x64-windows     #时间1.8h

(6)vcpkg install flann:x64-windows

(7)vcpkg install qt5:x64-windows      #时间42min

(8)vcpkg install metis:x64-windows

(9)vcpkg install eigen3:x64-windows

(10)vcpkg install glfw3:x64-windows

(11)vcpkg install poselib:x64-windows

(12)vcpkg integrate install

安装cgal的时候,必须开外网,否则cgal依赖boost时候,他会下载不下来boost。

Boost下载时间非常长,会一直卡着不动,这是后可以在powershell按按上下左右,有大概率机会他会跳一下。但是实际上放着就可以了,时长如下:1.8h

下载完这些之后,可以下载最后的别人做好的colmap了

(7) vcpkg install colmap[cuda,tests]:x64-windows

但是这里非常值得强调,这里可能会给一些错误,如下显示,这是因为我们的cuda其实要和vs2022的版本要对应上,否则编译会出问题,我们来到下面的官网发现,对于Vs2022 17.12版本,需要cuda12.5才能满足,所以这个问题解决了,colmap安装才能成功

CUDA Installation Guide for Microsoft Windows

Vs2022 17.12版本

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include\crt/host_config.h(153): fatal error C1189: #error: -- unsupported Microsoft Visual Studio version! Only the versions between 2017 and 2022 (inclusive) are supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk. # --error 0x2 --

这里是提示的日志信息,来这里我们可以看到错误提示:

安装好之后,我们怎么使用呢:

来到这个地方,然后运行即可正常使用。

6:正式安装vs2022版本colmap

这里将anaconda文件夹名字改一下,虽然不知道有没有用

①编译:在colmap中新建名为build的文件夹

②在build文件夹中右键打开终端,输入:

cmake .. -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=D:\appset\vcpkg\vcpkg-master\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -D CMAKE_CUDA_ARCHITECTURES="86" -D CMAKE_BUILD_TYPE=Debug

(这里86对应3060   -D CMAKE_BUILD_TYPE=Debug这样后续不会碰到bigobj问题,这是因为cmakelists中声明了如果使用CMAKE_BUILD_TYPE,那么就自动用bigobj,但是对于3.10和3.11由于我不用debug模式,这个参数可以不要,可以删掉,对于3.9还是要的)

其中,会出现一个问题,如下

他提示我们下载poselib超时,因此我们根据提示的问题,解决方法如下:问题的核心是PoseLib的依赖下载失败,并且FetchContent方式的下载验证文件哈希时发生了错误。即使您尝试通过vcpkg安装依赖项,CMake 仍然尝试用它的FetchContent机制下载和构建PoseLib。

因此手动下载指定的 PoseLib 版本并将其解压到正确的位置,从而跳过 FetchContent 的自动下载步骤。从以下地址手动下载PoseLib:

https://github.com/PoseLib/PoseLib/archive/8028473d92c9347794a0e3d3541863b5cbb15743.zip

然后这样就可以了

不知道为什么,他自动找到了我的这个路径,因此不用再添加这句话了:(当然,这里的变量好像得改名字,不叫这个名字)

{该文件放在了这里做了备份}

{(不用做)其实可以明确读一下cmakelists的这里,添加下面这句话,感觉就不会单独再下载了,但是我尝试失败了,可以以后试试。

if(FETCH_POSELIB)

    list(APPEND VCPKG_MANIFEST_FEATURES "poselib")

endif()

}

③生成/Build

使用VS2022打开COLMAP.sln

release版本

①在解决方案资源管理器里,展开cmake,在ALL_BUILD上右键选择生成/build,等待即可

然后会出现一下错误,这个是因为太大了,所以要用bigobj进行编译:

解决方法:

③双击报错,跳转到报错项目

④点击【项目】-->【属性】

⑤找到【C/C++】-->【命令行】,在最后添加如下内容,并点击【应用】:

 /bigobj

注意:这里有一个空格,即是空格+/bigobj,如果你的内容为空,那么只需要添加/bigobj即可:下图分别为原图和修改过的   (这里如果开始cmake的时候加了CMAKE_BUILD_TYPE就不用再来这一步了)

⑥回到【ALL_BUILD】,右键选择【重新生成】,然后成功

⑦在路径:build\src\colmap\exe\Debug中右键打开终端,输入:

colmap gui     正常显示,结束。

或者我们这么打开:

在调试中添加参数gui

然后将其设置为启动项

点击绿色箭头运行即可

为什么colmap_exe和colmap_main两个有什么区别:

colmap_exe是.lib,colmap_main是exe,因此我们只能运行main的应用程序,而lib的是运行不了的,运行了会报错如下:

Dubug版本(只能到3.9有效,3.10就报错了)

对于3.9版本来说,可以生成,但是运行的话提示缺少错误如下:缺少各种各样dll:lz4.dll等等等等,那是因为走的vcpkg,然后这里的没打开,开开就行,然后命令参数改为gui即可,最后将colmap_main的参数来一个gui  就可以运行了

对于3.10 3.11版本,我们采取另一种方法,使用RelWithDebInfo进行编译:

如果使用debug,那么会有如下的错误,但是我怎么改也不能成功

于是我使用RelWithDebInfo进行编译:

Success!!!

参考网页:

Windows+vcpkg+Cmake编译Colmap_vcpkg colmap-优快云博客
3.11/10 can't debug in Windows,VS2022 · Issue #2974 · colmap/colmap · GitHub

最详细简单的colmap(3.10-dev)环境配置(Windows,VS2019+Vcpkg)(2024/01/26)_最详简单的colmap-优快云博客

未看懂文献:

Windows上通过CMake编译COLMAP源码操作步骤_colmap一键脚本-优快云博客

7:如何调试colmap

对于relwithdebinfo,看这篇文章:

Visual Studio之RelWithDebInfo模式,“被忽视”的编译模式-优快云博客

### 在 Ubuntu 系统上下载并安装 Colmap 3.9 在 Ubuntu 系统上安装 Colmap 3.9,可以通过以下方法完成。以下是详细的安装过程和相关说明。 #### 1. 安装必要的依赖库 首先需要确保系统中已安装所有必要的依赖库。运行以下命令以安装所需的软件包: ```bash sudo apt-get update sudo apt-get install cmake libeigen3-dev libboost-all-dev libfreeimage-dev libsuitesparse-dev libgoogle-glog-dev libgflags-dev libgtest-dev libmetis-dev ``` 此外,还需要安装 Qt5 的相关库,这些库可以通过以下命令安装[^1]: ```bash sudo apt-get install aptitude sudo aptitude install libqt5dbus5 libqt5network5 libqt5core5a libqt5widgets5 libqt5gui5 libqt5svg5-dev ``` #### 2. 克隆 Colmap 源代码 从 GitHub 上克隆 Colmap 3.9 的源代码仓库: ```bash git clone https://github.com/colmap/colmap.git cd colmap ``` #### 3. 创建构建目录 在 Colmap 源代码目录下创建一个 `build` 文件夹,并进入该文件夹: ```bash mkdir build cd build ``` #### 4. 配置 CMake 使用 CMake 配置项目。如果系统中有 Anaconda 环境,可能会导致库冲突问题。为避免此问题,可以将 Anaconda 的 `lib` 文件夹备份到其他位置,从而防止编译过程中加载 Anaconda 的动态链接库[^2]。 同时,在 Colmap 的 `CMakeLists.txt` 文件中添加以下内容以设置 CUDA 架构(如果需要支持 CUDA): ```cmake set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "CUDA architectures" FORCE) ``` 配置完成后,运行以下命令生成 Makefile: ```bash cmake .. ``` #### 5. 编译与安装 运行以下命令开始编译: ```bash make -j$(nproc) ``` 编译完成后,安装 Colmap: ```bash sudo make install ``` #### 6. 验证安装 安装完成后,可以通过以下命令验证 Colmap 是否成功安装: ```bash colmap --version ``` --- ### 注意事项 - 如果遇到编译错误,请检查是否遗漏了某些依赖库或环境变量配置。 - 如果需要 GPU 支持,请确保系统中已正确安装 NVIDIA 驱动程序和 CUDA 工具包,并根据实际硬件调整 `CMAKE_CUDA_ARCHITECTURES` 的值[^2]。 --- ### 示例代码:CMakeLists.txt 修改示例 以下是修改后的 `CMakeLists.txt` 文件片段: ```cmake # 添加以下行以支持特定的 CUDA 架构 set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "CUDA architectures" FORCE) ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值