源地址:https://www.pclcn.org/study/shownews.php?lang=cn&id=48
摘要
接着上节《Windows下从预编译包搭建PCL开发环境》,针对需要用PCL(Point cloud library)中最新的模块或功能的用户,则需要从最新源码编译,本节用第三方预编译包从源码在windows下搭建PCL(Point Cloud Library)开发环境。适合于是使用Visual Studio 2010 或 Visual Studio 2008的Windows用户,主要因为PCL提供的第三方预编译库只有这两个编译环境下的包。
注意:本节假设读者熟悉CMake、svn、make和C++编译链接等有基础知识的读者。
准备工作:
a) {C}下载安装用户环境对应的第三方预编译包(https://www.pointclouds.org/downloads/windows.html),默认路径安装,方便PCL后期配置,如果用户定制了路径,在后续PCL的cmake选项时,不能自动寻找到第三方的库头文件目录与链接库目录,则需要用户分别指定,图1所示为第三方预编译包的下载文件;
图1 第三方预编译安装包
b) {C}下载安装源代码下载工具TortoiseSVN (https://tortoisesvn.tigris.org/);
c) {C}下载安装CMake工具版本大于2.8.3;
d) {C}下载PCL源代码,源码库路径为http://svn.pointclouds.org/pcl/trunk,如图2所示为利用TortoiseSVN下载源代码的截图,图3为下载好的源码目录结构,每个模块在pcl总目录下做为子文件夹存在,每个模块文件夹中包含模块中的头文件文件夹、模板类实现文件、源程序文件、cmake相关配置文件;
图2 TortoiseSVN下载代码
图3 PCL源码
Cmake配置PCL建立生成工程文件
图4 cmake设置源码与工程存储路径
打开cmake,如图4所示,设置PCL源码目录以及编译工程目录,点击配置,选择对应编译器visual studio 9 2008,点击finish,再点击配置与生成,即可得到工程文件,这里需要注意的是,如果前面用户未按照默认第三方库路径安装的话,点击配置时会提示不能找到第三方对应的库目录,读者需要手动添加目录,然后再点击配置,直到所有的目录不能找到的错误提示解决完为止,最后点击生成,即可得到整个PCL的工程文件。
图5 PCL中cmake的可配置选项(随着版本变更可能有增加或者删除的选项)
此处需要说明的是PCL中的cmake基本配置选项:
·BUILD_TESTS: 启用/禁用建立测试的选项
·BUILD_common: 启用/禁用建立常用库的选项
·BUILD_features: 启用/禁用建立特征库的选项
·BUILD_filters: 启用/禁用建立滤波器库的选项
·BUILD_global_tests: 启用/禁用建立全局测试的选项
·BUILD_io: 启用/禁用建立输入输出库的选项
·BUILD_kdtree: 启用/禁用建立k维树库的选项
·BUILD_keypoints: 启用/禁用建立关键点库的选项
·BUILD_octree: 启用/禁用建立八叉树库的选项
·BUILD_range_image: 启用/禁用建立深度图库的选项
·BUILD_registration: 启用/禁用建立配准库的选项
·BUILD_sample_consensus: 启用/禁用建立采样一致性库的选项
·BUILD_segmentation: 启用/禁用建立分割库的选项
·BUILD_surface: 启用/禁用建立表面库的选项
·BUILD_visualization: 启用/禁用建立可视化库的选项
·CMAKE_BUILD_TYPE: 这里指定编译链接类型。在CMake中,一个CMAKE_BUILD_TYPE相当于一套传递给编译器的选项和标志,用来激活一个功能或者使其无效,也用来限定编译链接过程。
·CMAKE_INSTALL_PREFIX: 安装头文件和编译好的PCL库的路径。
·PCL_SHARED_LIBS:编译链接是否为动态链接库的选项,默认启用。
·PCL_VERSION: 这是PCL库版本。
·VTK_DIR: VTK库的目录。
·其中某个模块: 把BUILD_LIBRARY_NAME设置成OFF,关闭编译和使用某个模块。注意如果你设置XXX库为off,而它是构建YYY的依赖库,那么XXX将会被编译使用但是不会出现在最终结果库中。
·Debug:改变编译链接的发布为debug版本,意味着链接库没有做优化,并且所有调试符号被嵌入到库文件中,这取决于平台和编译器,在带gcc的Linux上这相当于用-O0 -g -ggdb–Wall参数运行gcc。
·Release: 改变编译链接的发布为release版本,编译链接得到的库进行了优化,并且不打印出调试信息,这对于gcc将启用-O3选项,对于clang将使用-O5选项。
·RelWithDebInfo: 改变编译链接的发布为RelWithDebInfo版本,编译链接得到的库进行了优化,但是调试数据也被嵌入到库文件中,这是前两种release和debug版本的折中。
·MinSizeRel:改变编译链接的发布为MinSizeRel版本,通常,这个会生成你能够建立的尺寸最小的库。当是为android或者一个内存空间受限制的系统建立链接库的时候,这一点很重要。
·USE_PROJECT_FOLDER: 启用/禁用建立的工程是否用文件夹管理的选项,此项方便用户有条理的查阅生成的工程文件。
·BUILD_CUDA:设置是否支持PCL中的CUDA代码,如果设置为on,则会有提示找出一系列CUDA头文件和库文件路径等变量,如果不能自行找到,需要用户设置才能继续,编译可选项。
·BUILD_GPU:设置是否支持PCL中GPU相关的优化代码,编译可选项。
·MPI_xx:设置与支持MPI相关的运行文件、头文件、库文件的路径,为编译可选项。
·OPENMP_xx:设置与支持OpenMP相关的运行文件、头文件、库文件的路径,为编译可选项。
·VTK_xx:设置与支持VTK相关的运行文件、头文件、库文件的路径。
·BOOST_xx:设置与支持Boost相关的运行文件、头文件、库文件的路径。
·EIGEN_xx:设置与支持Eigen相关的运行文件、头文件、库文件的路径。
·FLANN_xx:设置与支持FLANN相关的运行文件、头文件、库文件的路径。
·QT_xx:设置与支持Qt相关的运行文件、头文件、库文件的路径,为编译可选项。
·QHULL_xx:设置与支持Qhull相关的运行文件、头文件、库文件的路径。
·OPENNI_xx:设置与支持OpenNI相关的运行文件、头文件、库文件的路径,为编译可选项。
上面列出的只是基本选项,大多数为必须设置的项,适合初学者,如果用户为高级用户可以选择cmake界面上的Advanced选项,在原来的基本可选项中会增加很多选项,大多数为可选项,适合高级用户,用户可以根据自己需要选择和编辑选项。最后生成自己定制的工程文件。
图6 点击生成得到的PCL工程文件
图7 两边对比是否在cmake选项中开启USE_PROJECT_FOLDER变量
全部编译安装
继上一步生成的PCL工程目录下打开PCL.sln解决方案文件,如图8所示,右击ALL_BUILD工程,选择Build,即可完成对PCL中所有的模块和例子程序编译与链接,时间可能比较长,和用户选择建立的模块个数以及用户的计算机配置有关,可出去喝点东西,回来可能就完成了。
图8 全部编译
编译链接完成后,安装PCL,即拷贝编译链接后的PCL头文件、库文件、可执行文件到前面cmake设置的CMAKE_INSTALL_PREFIX变量指定的路径,用户不需要自己拷贝,如图9所示右击INSTALL工程选择Build,即可完成对PCL的安装。
图9 安装PCL
注意:建议笔者将安装好的PCL的bin目录(例如:C:\Program Files\PCL\bin),添加到PATH系统环境中,方便运行PCL编译出的应用程序时找到对应的链接库等。
测试是否成功
安装之后测试与《Windows下从预编译包搭建PCL开发环境》小节所讲测试一样,此处不在重复。
PCL(Point Cloud Learning)中国定期整理更新,敬请关注新的教程发布。
Point Cloud Library整理更新项目支持系列—用第三方预编译包从源码在windows下搭建PCL(Point Cloud Library)开发环境。