将open3d依赖的qhull代码修改并固定到目录下

本文档介绍了如何处理open3d与pcl-ros之间的qhull依赖版本不兼容问题。通过修改open3d的ExternalProject_Add设置,指定本地已有的qhull源代码目录,避免了从网络下载。接着修改了qhull和open3d中的命名空间以解决冲突。最后,将修改后的qhull和open3d分别存入个人git仓库,并在安装时指向这些仓库。确保在编译open3d时添加-DGLIBCXX_USE_CXX11_ABI=ON选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、问题描述
open3d依赖的qhull为7.3.0,pcl-ros依赖的是qhull7.2.0,两者不兼容。
一个工程里如果用了open3d,又用了pcl-ros,运行时会报错。

由于一定要使用,就想办法把open3d用的qhull固定下来,做一些修改。

2、查看ExternalProject_Add的使用说明
https://cmake.org/cmake/help/latest/module/ExternalProject.html

在open3d中,原来是用

ExternalProject_Add(
    ext_qhull
    PREFIX qhull
    URL https://github.com/qhull/qhull/archive/refs/tags/v7.3.0.tar.gz
    URL_HASH SHA256=05a2311d8e6397c96802ee5a9d8db32b83dac7e42e2eb2cd81c5547c18e87de6
    DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/qhull"
    UPDATE_COMMAND ""
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
)

从网上下载的,改成指定目录:

ExternalProject_Add(
    ext_qhull
    PREFIX qhull
    SOURCE_DIR /home/gumh/Workspace/Open3D/cpp/v7.3.0/qhull-7.3.0
    DOWNLOAD_DIR "${OPEN3D_THIRD_PARTY_DOWNLOAD_DIR}/qhull"
    UPDATE_COMMAND ""
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
)

注意SOURCE_DIR的作用:如果指定了download url,那么就会存储解压的数据。而这个参数也可以直接指定已经准备好的解压好的依赖工程。

在这里插入图片描述

3、将qhull中的命名空间进行修改
4、将open3d中用到的命名空间进行修改
运行之前有问题的代码,可以看到成功运行。
在这里插入图片描述

5、后续处理
1)将修改后的qhull放入自己的git中;
2)修改open3d中qhull.cmake,将url改为git地址
3)将修改后的open3d放入自己的git中;
4)安装open3d时,要求从自己的git中安装。

6、另外还有一点要注意的是
编译open3d时,加上编译选项:-DGLIBCXX_USE_CXX11_ABI=ON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值