VS+Open3D_0.18.0版本环境配置

本文详细描述了如何在Windows环境下使用VS2022和CMake3.20编译Open3D0.18.0版本的过程,包括设置环境变量、源码配置、解决编译警告等问题,供开发者参考。
摘要由CSDN通过智能技术生成

Open3D0.18.0版本较新,在网上参考资料编译,踩了不少雷,这里记录一下,结尾放上编译好的库

环境

VS2022+Open3D_0.18.0

准备

cmake >=3.20
python >=3.6

源码编译

  1. 在github官网下载Open3D的源码
    Open3D
    Source Code即可

  2. 解压后在目录下创建build和install目录
    在这里插入图片描述

  3. 打开cmake_gui,建议使用较新的cmake我这里用的是cmake3.29.2

  4. 设置源码路径和build路径,build路径就是第2步创建的build文件夹的路径
    在这里插入图片描述

  5. 点击Configure
    在这里插入图片描述
    6.选择生成器,这个你电脑有哪个版本就选哪个就行,我这里是VS2022,其实用VS2019也是可以的,其它地方不需要修改,然后点击finish即可
    在这里插入图片描述

  6. 如果网络条件不好的话,可能需要的时间比较长

  7. 这里需要修改两个地方

  8. CMAKE_BUILD_TYPE 如果你要配置Debug项目就选Debug,如果是Release项目就选Release
    在这里插入图片描述

  9. 将CMAKE_INSTALL_PREFIX值改为前面创建的install路径
    在这里插入图片描述

  10. 点击Generate

  11. 结束之后点击OpenProject,就会将项目在VS中打开
    在这里插入图片描述

  12. 这里看你要编译Debug版本的Open3D还是release版本进行选择
    在这里插入图片描述

  13. 我这里选的是Debug版本,右键单击ALL_BUILD项目点击生成
    在这里插入图片描述
    在这里插入图片描述

  14. 这里也要看网络环境,可能会很慢,生成结束之后,在ALL_BUILD项目下面会生成一个INSTALL项目,同样右键单击INSTALL项目,然后点击生成。
    在这里插入图片描述
    13.然后在install目录下会看到最后编译好的Open3D库,目录下应该是这样,但是据说不同Open3D库的编译结果有较大差异,我这里是将install里面生成的内容单独放到另一个文件夹里面了,但不单独都可以。
    在这里插入图片描述

VS配置Open3D环境

  1. 打开属性管理器,在项目对应的Debug/Release模式下添加一个属性表
    在这里插入图片描述
  2. 包含目录
    在这里插入图片描述
    在这里插入图片描述
  3. 库目录
    在这里插入图片描述
    在这里插入图片描述
  4. 链接器->输入->附加依赖项
    在这里插入图片描述
Open3D.lib
OpenGL32.lib
Open3D_3rdparty_assimp.lib
Open3D_3rdparty_blas_mkl_core.lib
Open3D_3rdparty_blas_mkl_intel_ilp64.lib
Open3D_3rdparty_blas_mkl_sequential.lib
Open3D_3rdparty_blas_mkl_tbb_thread.lib
Open3D_3rdparty_blas_tbb_static.lib
Open3D_3rdparty_civetweb_civetweb-cpp.lib
Open3D_3rdparty_civetweb_civetweb.lib
Open3D_3rdparty_curl.lib
Open3D_3rdparty_embree_embree3.lib
Open3D_3rdparty_embree_embree_avx.lib
Open3D_3rdparty_embree_embree_avx2.lib
Open3D_3rdparty_embree_lexers.lib
Open3D_3rdparty_embree_math.lib
Open3D_3rdparty_embree_simd.lib
Open3D_3rdparty_embree_sys.lib
Open3D_3rdparty_embree_tasking.lib
Open3D_3rdparty_filament_backend.lib
Open3D_3rdparty_filament_bluegl.lib
Open3D_3rdparty_filament_bluevk.lib
Open3D_3rdparty_filament_filabridge.lib
Open3D_3rdparty_filament_filaflat.lib
Open3D_3rdparty_filament_filamat_lite.lib
Open3D_3rdparty_filament_filament.lib
Open3D_3rdparty_filament_filameshio.lib
Open3D_3rdparty_filament_geometry.lib
Open3D_3rdparty_filament_ibl.lib
Open3D_3rdparty_filament_image.lib
Open3D_3rdparty_filament_meshoptimizer.lib
Open3D_3rdparty_filament_smol-v.lib
Open3D_3rdparty_filament_utils.lib
Open3D_3rdparty_fmt.lib
Open3D_3rdparty_glew.lib
Open3D_3rdparty_glfw.lib
Open3D_3rdparty_imgui.lib
Open3D_3rdparty_ippicv_ippicvmt.lib
Open3D_3rdparty_ippicv_ippiw.lib
Open3D_3rdparty_jpeg.lib
Open3D_3rdparty_jsoncpp.lib
Open3D_3rdparty_liblzf.lib
Open3D_3rdparty_png.lib
Open3D_3rdparty_qhullcpp.lib
Open3D_3rdparty_qhull_r.lib
Open3D_3rdparty_rply.lib
Open3D_3rdparty_tbb_tbbmalloc_static.lib
Open3D_3rdparty_tbb_tbb_static.lib
Open3D_3rdparty_tinyfiledialogs.lib
Open3D_3rdparty_uvatlas.lib
Open3D_3rdparty_vtk_vtkCommonCore-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonDataModel-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonExecutionModel-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonMath-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonMisc-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonSystem-9.1d.lib
Open3D_3rdparty_vtk_vtkCommonTransforms-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersCore-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersGeneral-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersModeling-9.1d.lib
Open3D_3rdparty_vtk_vtkFiltersSources-9.1d.lib
Open3D_3rdparty_vtk_vtkkissfft-9.1d.lib
Open3D_3rdparty_vtk_vtkpugixml-9.1d.lib
Open3D_3rdparty_vtk_vtksys-9.1d.lib
Open3D_3rdparty_webrtc_webrtc.lib
Open3D_3rdparty_webrtc_webrtc_extra.lib
Open3D_3rdparty_zeromq.lib
Open3D_3rdparty_zlib.lib

这里面是编译好的Open3D库路径下的lib文件夹下所有文件的文件名,注意还需要添加OpenGL32.lib
在这里插入图片描述

  1. c/c+±>代码生成->运行库,这里如果是Release版本就选MT,我这里是Debug版本选MTd
    在这里插入图片描述

测试结果

测试代码

#include <iostream>
#include <random>
#include <Open3D/Open3D.h>

using namespace std;

int main(int argc, char* argv[])
{
	// -------------------------生成点云-----------------------------
	auto noise_cloud = std::make_shared<open3d::geometry::PointCloud>();
	int N = 10000;
	noise_cloud->points_.resize(N);

	std::normal_distribution<> norm{ 0, 0.002 };
	std::random_device rd;
	std::default_random_engine rng{ rd() };

	for (size_t i = 0; i < N; ++i)
	{
		noise_cloud->points_[i][0] = norm(rng);
		noise_cloud->points_[i][1] = norm(rng);
		noise_cloud->points_[i][2] = norm(rng);


	}

	open3d::io::WritePointCloudToPCD("Gaiss_noise.pcd", *noise_cloud, false);
	open3d::visualization::DrawGeometries({ noise_cloud }, "PointCloud", 1600, 900);


	return 0;
}

结果

在这里插入图片描述

报错

报错
严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息
错误 C4996 ‘stdext::checked_array_iterator<T *>::checked_array_iterator’: warning STL4043: stdext::checked_array_iterator, stdext::unchecked_array_iterator, and related factory functions are non-Standard extensions and will be removed in the future. std::span (since C++20) and gsl::span can be used instead. You can define _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING or _SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS to suppress this warning.
with
[
T=char
] PoissonDiskSample E:\Open3D-0.18.0\include\open3d\3rdparty\fmt\format.h 270

解决方法
按照报错提示,在预处理器定义中添加_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING或者_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS

在这里插入图片描述

参考文章

Win10系统下VisualStudio2019 配置Open3D-0.13.0
windows10编译open3d 0.13
open3d-0.10.0 + visual studio 2019 + windows

  • 20
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值