使用 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.7
、pkg-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(点云库)添加到现有项目的主要内容,如果未能解决你的问题,请参考以下文章