使用 Makefile 将 PCL(点云库)添加到现有项目

Posted

技术标签:

【中文标题】使用 Makefile 将 PCL(点云库)添加到现有项目【英文标题】:Adding PCL (Point Cloud Library) to existing project with Makefiles 【发布时间】:2015-09-09 17:22:54 【问题描述】:

我有一个关于 PCL 的问题:特别是我想在现有项目中使用它和现有的 Makefile。但是,PCL 正在使用 CMake,我找不到如何将它直接添加到 Makefile。有人知道怎么做吗?

【问题讨论】:

这里有什么问题?如何链接到图书馆?如何自动获取由您的makefile构建的库?还有什么? 是的,如何在Makefile中直接链接PCL。 如何链接到给定的库与该库的构建方式无关。您只是在问如何将正确的标志添加到您的链接命令,以便您的二进制文件链接到系统可用的 PCL 库? 试试pkg-config --list-all | less 并寻找PCL/pcl/等?它也可能不在标准位置。但我认为这主要是 cmake 用来查找库的方法,因此希望它能正常工作。 您需要将pkg-config --libs pcl_registration-1.7pkg-config --cflags pcl_registration-1.7 等的输出添加到您的makefile 的编译和链接器标志中。如何在 makefile 中执行此操作取决于 makefile 的内容。 【参考方案1】:

首先尝试使用 CMake 编译 PCL 网站中提供的示例之一。 http://pointclouds.org/documentation/tutorials/pcl_visualizer.php

上面的例子编译完成后,你会在你的目录中发现各种新文件和一个由CMake创建的文件夹。

转到 CMakeFiles/pcl_visualizer_demo.dir/ 。 打开名为 link.txt 的文件,其中包含终端命令,该终端命令将各种 pcl(点云库)动态链接到该文件。

命令应该类似于下面显示的命令

/usr/bin/c++ -O3 -Wno-deprecated -s CMakeFiles/pcl_visualizer_demo.dir -o pcl_visualizer_demo -rdynamic -lpcl_common -Wl,-Bstatic -lflann_cpp_s -Wl,-Bdynamic -lpcl_kdtree -lpcl_octree -lpcl_search -lqhull -lpcl_surface -lpcl_sample_consensus -lpcl_io -lpcl_filters -lpcl_features -lpcl_keypoints -lpcl_registration -lpcl_segmentation -lpcl_recognition -lpcl_visualization -lpcl_people -lpcl_outofcore -lpcl_tracking /usr/lib/libvtkGenericFiltering.so.5.8.0 /usr/lib/libvtkGeovis.so.5.8.0 /usr/lib/libvtkCharts.so.5.8.0 /usr/lib/libvtkViews.so.5.8.0 /usr/lib/libvtkInfovis.so.5.8.0 /usr/lib/libvtkWidgets.so.5.8.0

您可以将这些库直接包含在您的 Makefile 中。

如果您使用不同的函数或 pcl 头文件,请先尝试使用 CMake 编译它并获取链接的库并将其添加到您之前项目的 Makefile 中。

我为我的项目尝试了这种方法,效果很好。我尝试pkg-config 链接库,这在我的情况下不起作用。我找不到任何其他方法可以轻松链接所有必需的库。

【讨论】:

以上是关于使用 Makefile 将 PCL(点云库)添加到现有项目的主要内容,如果未能解决你的问题,请参考以下文章

PCL(点云库)中实时 kinect 数据的范围图像生成

Ubuntu16.04下PCL点云库的安装及使用demo

PCL点云库安装及学习(2021.7.28)

PCL点云库:Kd树

如何将点云库与 Unity Google tango 项目集成?

点云文件有几百兆用pcl加载时显示失败