PCL 1.8.0+VS 2015+CMake的安装配置详细教程

        看了很多很多博客,配了删,删了配,机房win7电脑足足配置了两天,但在自己电脑win10配置又遇到了别的问题,最后又安装cmake,自己的电脑又搞了两天。看了网上的博客,结合自己的配置过程,希望写个更整体、更详细的配置说明,来帮助更多人。有的博客写的很详细的,我就只补充些我遇到的问题。为了更方便安装配置,我把我安装的这些软件版本供大家下载:

百度云下载链接:https://pan.baidu.com/s/1f24uAR3cFiWPb_Vk8jiZCw 密码:qnk1

文件截图:

本文所有的软件都安装在了D盘

1.安装VS2015

VS2015有三个版本,社区版足够我们使用,这里我选择的是社区版。安装教程下面的博客十分详细,只不过要注意一个评论

勾选 vs 2015 更新3 ,在我win10电脑上没有勾选,结果创建不了项目!重新安装时勾选之后没这个情况了。

博客:https://blog.csdn.net/guxiaonuan/article/details/73775519?locationNum=2&fps=1

注意事项:这个社区版是免费的,但是刚开始使用30天试用期,试用期一过就得登录账户才能继续免费使用。

2.安装PCL-1.8.0

首先说明一下PCL的安装路径问题,有的教程选择默认安装在C盘,说cmake只在C盘搜索PCL库。这个我不太清楚,但是按在系统盘C盘也有一些问题,博客中没有提及,耗费了我很长时间。如果安装在C盘,cmake一定要以管理员的身份运行,不然在Cmake创建项目时会读写文件失败。如果安装在别的盘,就正常打开就行了。测试cmake时有一些红色字体的警告:(如下图,只截取部分),这种情况并不影响最后测试成功。(亲测,机房电脑安装在C盘;自己电脑安装在D盘)

扫描二维码关注公众号,回复: 2422591 查看本文章

还有就是注册表中两个文件PCLRelease.props和PCLDebug.props,不同系统会有不同,配置的前 自己注意一下,里边的内容是PCL-3rd里边所有文件夹对应的LIB库,不对应会报错。

配置链接器-输入项-附加依赖库的文件,可参考,同样是看PCL-3rd里边所有文件夹对应的LIB库,不对应会报错,我百度云提供的都是对应着的。

了解pcl安装在哪个盘对别的软件影响之后,开始安装PCL吧。

安装步骤

1.点击PCL-1.8.0-AllInOne-msvc2015-win64.exe安装,可以默认也可以自己选择安装路径(影响上面已经说了),如本文所选择的路径为默认安装路径D:\;之后就点下一步或安装就行了。

2.在安装过程中,OpenNI2在安装时会弹出界面,安装在你安装PCL的文件夹PCL 1.8.0\3rdParty\OpenNI2下,例如本文是选择目录D:\PCL 1.8.0\3rdParty\OpenNI2;之后就点下一步或安装就行了。

3.等待一段时间,则安装完成。

4.将下载的文件夹pcl-1.8.0-pdb-msvc2015-win64里的东西,全部粘贴到安装路径D:\PCL 1.8.0\bin文件夹下。

注意事项:1、在安装点击“我接收(I)”之后弹出来的对话框中一定要选择第二项AddPCL to the system PATH for all users:

                    2、在自己win10电脑安装时,无论安装在C盘还是D盘都会提示path too long installer unable to modify path警告                            (如下图,网上找的),但是机房win7电脑没有这个情况。就目前来看,这个还没有什么影响。

配置环境

win10是找到 控制面板—》系统—》高级系统设置—》环境变量;在系统变量中找到Path添加上以下路径

D:\PCL 1.8.0\bin;
D:\PCL 1.8.0\3rdParty\FLANN\bin;
D:\PCL 1.8.0\3rdParty\Qhull\bin;
D:\PCL 1.8.0\3rdParty\OpenNI2\Tools;
D:\PCL 1.8.0\3rdParty\VTK\bin

这样就安装完毕了。

在VS 2015中配置PCL

1.首先打开VS 2015,创建新的win32控制台工程,建好后将平台改成X64,将代码粘贴进去

#include<pcl/visualization/cloud_viewer.h>
#include<iostream>//标准C++库中的输入输出类相关头文件。
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //PCL中支持的点类型头文件。
int user_data;
using std::cout;


void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
	viewer.setBackgroundColor(1.0, 0.5, 1.0);   //设置背景颜色
}

int main() {
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

	char strfilepath[256] = "rabbit.pcd";
	if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
		cout << "error input!" << endl;
		return -1;
	}

	cout << cloud->points.size() << endl;
	pcl::visualization::CloudViewer viewer("Cloud Viewer");     //创建viewer对象

	viewer.showCloud(cloud);
	viewer.runOnVisualizationThreadOnce(viewerOneOff);
	system("pause");
	return 0;
}

2.在解决方案资源管理器中右击项目名称点击属性

3.在弹出框中选中VC++目录,添加包含目录和库目录。

4.点击包含目录,下拉箭头—》编辑,添加文件路径(看你把PCl安在哪了)

完成后点击确定。

5.点击库目录,下拉箭头—》编辑,添加文件路径

完成后点击确定。

6.点击链接器—》输入—》附加依赖项,点击下拉箭头—》编辑,添加下列文件(可以下面粘贴复制,也可以在Debug附加依赖项.txt中复制)。注意:这是在Debug下的配置!

pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_debug.lib
pcl_io_ply_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_ml_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
libboost_atomic-vc140-mt-gd-1_61.lib
libboost_chrono-vc140-mt-gd-1_61.lib
libboost_container-vc140-mt-gd-1_61.lib
libboost_context-vc140-mt-gd-1_61.lib
libboost_coroutine-vc140-mt-gd-1_61.lib
libboost_date_time-vc140-mt-gd-1_61.lib
libboost_exception-vc140-mt-gd-1_61.lib
libboost_filesystem-vc140-mt-gd-1_61.lib
libboost_graph-vc140-mt-gd-1_61.lib
libboost_iostreams-vc140-mt-gd-1_61.lib
libboost_locale-vc140-mt-gd-1_61.lib
libboost_log-vc140-mt-gd-1_61.lib
libboost_log_setup-vc140-mt-gd-1_61.lib
libboost_math_c99-vc140-mt-gd-1_61.lib
libboost_math_c99f-vc140-mt-gd-1_61.lib
libboost_math_c99l-vc140-mt-gd-1_61.lib
libboost_math_tr1-vc140-mt-gd-1_61.lib
libboost_math_tr1f-vc140-mt-gd-1_61.lib
libboost_math_tr1l-vc140-mt-gd-1_61.lib
libboost_mpi-vc140-mt-gd-1_61.lib
libboost_prg_exec_monitor-vc140-mt-gd-1_61.lib
libboost_program_options-vc140-mt-gd-1_61.lib
libboost_random-vc140-mt-gd-1_61.lib
libboost_regex-vc140-mt-gd-1_61.lib
libboost_serialization-vc140-mt-gd-1_61.lib
libboost_signals-vc140-mt-gd-1_61.lib
libboost_system-vc140-mt-gd-1_61.lib
libboost_test_exec_monitor-vc140-mt-gd-1_61.lib
libboost_thread-vc140-mt-gd-1_61.lib
libboost_timer-vc140-mt-gd-1_61.lib
libboost_type_erasure-vc140-mt-gd-1_61.lib
libboost_unit_test_framework-vc140-mt-gd-1_61.lib
libboost_wave-vc140-mt-gd-1_61.lib
libboost_wserialization-vc140-mt-gd-1_61.lib
vtkzlib-7.0-gd.lib
vtkViewsContext2D-7.0-gd.lib
vtkhdf5_hl-7.0-gd.lib
vtkFiltersProgrammable-7.0-gd.lib
vtkIOMovie-7.0-gd.lib
vtkexpat-7.0-gd.lib
vtkRenderingLOD-7.0-gd.lib
vtkIOPLY-7.0-gd.lib
vtkpng-7.0-gd.lib
vtkIOVideo-7.0-gd.lib
vtkRenderingImage-7.0-gd.lib
vtkFiltersVerdict-7.0-gd.lib
vtkNetCDF_cxx-7.0-gd.lib
vtkjpeg-7.0-gd.lib
vtkInteractionImage-7.0-gd.lib
vtkverdict-7.0-gd.lib
vtkoggtheora-7.0-gd.lib
vtkImagingStatistics-7.0-gd.lib
vtkCommonSystem-7.0-gd.lib
vtkFiltersParallelImaging-7.0-gd.lib
vtkFiltersTexture-7.0-gd.lib
vtkCommonMisc-7.0-gd.lib
vtkCommonMath-7.0-gd.lib
vtkFiltersSelection-7.0-gd.lib
vtkImagingFourier-7.0-gd.lib
vtkIOXMLParser-7.0-gd.lib
vtkproj4-7.0-gd.lib
vtkalglib-7.0-gd.lib
vtktiff-7.0-gd.lib
vtksqlite-7.0-gd.lib
vtkImagingSources-7.0-gd.lib
vtkCommonTransforms-7.0-gd.lib
vtkImagingMath-7.0-gd.lib
vtkFiltersGeneric-7.0-gd.lib
vtkexoIIc-7.0-gd.lib
vtkfreetype-7.0-gd.lib
vtkImagingColor-7.0-gd.lib
vtkNetCDF-7.0-gd.lib
vtkFiltersImaging-7.0-gd.lib
vtkFiltersHyperTree-7.0-gd.lib
vtkImagingMorphological-7.0-gd.lib
vtkImagingStencil-7.0-gd.lib
vtkRenderingFreeType-7.0-gd.lib
vtkCommonColor-7.0-gd.lib
vtkjsoncpp-7.0-gd.lib
vtkRenderingContext2D-7.0-gd.lib
vtkFiltersAMR-7.0-gd.lib
vtkRenderingContextOpenGL-7.0-gd.lib
vtkIOParallelXML-7.0-gd.lib
vtkViewsCore-7.0-gd.lib
vtkImagingHybrid-7.0-gd.lib
vtkIOExport-7.0-gd.lib
vtkRenderingVolumeOpenGL-7.0-gd.lib
vtkIOImport-7.0-gd.lib
vtkDomainsChemistry-7.0-gd.lib
vtkInteractionStyle-7.0-gd.lib
vtkCommonComputationalGeometry-7.0-gd.lib
vtkDICOMParser-7.0-gd.lib
vtklibxml2-7.0-gd.lib
vtkIOMINC-7.0-gd.lib
vtkIOSQL-7.0-gd.lib
vtkFiltersModeling-7.0-gd.lib
vtkParallelCore-7.0-gd.lib
vtkIOAMR-7.0-gd.lib
vtkGeovisCore-7.0-gd.lib
vtksys-7.0-gd.lib
vtkIOEnSight-7.0-gd.lib
vtkImagingGeneral-7.0-gd.lib
vtkFiltersFlowPaths-7.0-gd.lib
vtkIOLSDyna-7.0-gd.lib
vtkFiltersSMP-7.0-gd.lib
vtkIOParallel-7.0-gd.lib
vtkFiltersGeometry-7.0-gd.lib
vtkInfovisLayout-7.0-gd.lib
vtkIOCore-7.0-gd.lib
vtkFiltersSources-7.0-gd.lib
vtkIOLegacy-7.0-gd.lib
vtkFiltersHybrid-7.0-gd.lib
vtkIONetCDF-7.0-gd.lib
vtkFiltersExtraction-7.0-gd.lib
vtkFiltersParallel-7.0-gd.lib
vtkRenderingLabel-7.0-gd.lib
vtkIOInfovis-7.0-gd.lib
vtkRenderingAnnotation-7.0-gd.lib
vtkImagingCore-7.0-gd.lib
vtkCommonExecutionModel-7.0-gd.lib
vtkhdf5-7.0-gd.lib
vtkViewsInfovis-7.0-gd.lib
vtkIOGeometry-7.0-gd.lib
vtkmetaio-7.0-gd.lib
vtkIOImage-7.0-gd.lib
vtkIOXML-7.0-gd.lib
vtkIOExodus-7.0-gd.lib
vtkRenderingVolume-7.0-gd.lib
vtkChartsCore-7.0-gd.lib
vtkFiltersStatistics-7.0-gd.lib
vtkInfovisCore-7.0-gd.lib
vtkRenderingCore-7.0-gd.lib
vtkInteractionWidgets-7.0-gd.lib
vtkRenderingOpenGL-7.0-gd.lib
vtkFiltersGeneral-7.0-gd.lib
vtkFiltersCore-7.0-gd.lib
vtkCommonDataModel-7.0-gd.lib
vtkCommonCore-7.0-gd.lib
flann_cpp_s-gd.lib
qhullstatic_d.lib
OpenNI2.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
comctl32.lib
wsock32.lib
glu32.lib
opengl32.lib
ws2_32.lib
Psapi.lib

7.点击配置属性下的调试,右边环境项设为

PATH=$(PCL_ROOT)bin;$(PCL_ROOT)3rdPartyFLANNbin;$(PCL_ROOT)3rdPartyVTKbin;$(PCL_ROOT)Qhullbin;$(PCL_ROOT)3rdPartyOpenNI2Tools;$(PATH)

8.点击属性配置下的C/C++的子项预处理器,右边预处理定义,添加上 _SCL_SECURE_NO_WARNINGS 和  _CRT_SECURE_NO_WARNINGS

9.点击C/C++下的子项:常规,右边的附加包含目录添加 D:\PCL 1.8.0\3rdParty\Boost\include\boost-1_61

注意:刚刚的配置都是在Debug下的配置,也可以在Release下配置,二者只有在链接器—》输入—》附加依赖项中添加的文件不同,其他配置是一样的,下面是Release下的附加依赖项所添加的文件:

pcl_common_release.lib
pcl_features_release.lib
pcl_filters_release.lib
pcl_io_ply_release.lib
pcl_io_release.lib
pcl_kdtree_release.lib
pcl_keypoints_release.lib
pcl_ml_release.lib
pcl_octree_release.lib
pcl_outofcore_release.lib
pcl_people_release.lib
pcl_recognition_release.lib
pcl_registration_release.lib
pcl_sample_consensus_release.lib
pcl_search_release.lib
pcl_segmentation_release.lib
pcl_stereo_release.lib
pcl_surface_release.lib
pcl_tracking_release.lib
pcl_visualization_release.lib
libboost_atomic-vc140-mt-1_61.lib
libboost_chrono-vc140-mt-1_61.lib
libboost_container-vc140-mt-1_61.lib
libboost_context-vc140-mt-1_61.lib
libboost_coroutine-vc140-mt-1_61.lib
libboost_date_time-vc140-mt-1_61.lib
libboost_exception-vc140-mt-1_61.lib
libboost_filesystem-vc140-mt-1_61.lib
libboost_graph-vc140-mt-1_61.lib
libboost_iostreams-vc140-mt-1_61.lib
libboost_locale-vc140-mt-1_61.lib
libboost_log-vc140-mt-1_61.lib
libboost_log_setup-vc140-mt-1_61.lib
libboost_math_c99-vc140-mt-1_61.lib
libboost_math_c99f-vc140-mt-1_61.lib
libboost_math_c99l-vc140-mt-1_61.lib
libboost_math_tr1-vc140-mt-1_61.lib
libboost_math_tr1f-vc140-mt-1_61.lib
libboost_math_tr1l-vc140-mt-1_61.lib
libboost_mpi-vc140-mt-1_61.lib
libboost_prg_exec_monitor-vc140-mt-1_61.lib
libboost_program_options-vc140-mt-1_61.lib
libboost_random-vc140-mt-1_61.lib
libboost_regex-vc140-mt-1_61.lib
libboost_serialization-vc140-mt-1_61.lib
libboost_signals-vc140-mt-1_61.lib
libboost_system-vc140-mt-1_61.lib
libboost_test_exec_monitor-vc140-mt-1_61.lib
libboost_thread-vc140-mt-1_61.lib
libboost_timer-vc140-mt-1_61.lib
libboost_unit_test_framework-vc140-mt-1_61.lib
libboost_wave-vc140-mt-1_61.lib
libboost_wserialization-vc140-mt-1_61.lib
flann.lib
flann_s.lib
flann-gd.lib
flann_cpp_s.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
qhull.lib
qhull_d.lib
qhullcpp_d.lib
qhullstatic.lib
qhullstatic_d.lib
qhullstatic_r.lib
qhullstatic_r_d.lib
qhull_p.lib
qhull_p_d.lib
qhull_r.lib
qhull_r_d.lib
vtkalglib-7.0.lib
vtkChartsCore-7.0.lib
vtkCommonColor-7.0.lib
vtkCommonComputationalGeometry-7.0.lib
vtkCommonCore-7.0.lib
vtkCommonDataModel-7.0.lib
vtkCommonExecutionModel-7.0.lib
vtkCommonMath-7.0.lib
vtkCommonMisc-7.0.lib
vtkCommonSystem-7.0.lib
vtkCommonTransforms-7.0.lib
vtkDICOMParser-7.0.lib
vtkDomainsChemistry-7.0.lib
vtkexoIIc-7.0.lib
vtkexpat-7.0.lib
vtkFiltersAMR-7.0.lib
vtkFiltersCore-7.0.lib
vtkFiltersExtraction-7.0.lib
vtkFiltersFlowPaths-7.0.lib
vtkFiltersGeneral-7.0.lib
vtkFiltersGeneric-7.0.lib
vtkFiltersGeometry-7.0.lib
vtkFiltersHybrid-7.0.lib
vtkFiltersHyperTree-7.0.lib
vtkFiltersImaging-7.0.lib
vtkFiltersModeling-7.0.lib
vtkFiltersParallel-7.0.lib
vtkFiltersParallelImaging-7.0.lib
vtkFiltersProgrammable-7.0.lib
vtkFiltersSelection-7.0.lib
vtkFiltersSMP-7.0.lib
vtkFiltersSources-7.0.lib
vtkFiltersStatistics-7.0.lib
vtkFiltersTexture-7.0.lib
vtkFiltersVerdict-7.0.lib
vtkfreetype-7.0.lib
vtkGeovisCore-7.0.lib
vtkhdf5-7.0.lib
vtkhdf5_hl-7.0.lib
vtkImagingColor-7.0.lib
vtkImagingCore-7.0.lib
vtkImagingFourier-7.0.lib
vtkImagingGeneral-7.0.lib
vtkImagingHybrid-7.0.lib
vtkImagingMath-7.0.lib
vtkImagingMorphological-7.0.lib
vtkImagingSources-7.0.lib
vtkImagingStatistics-7.0.lib
vtkImagingStencil-7.0.lib
vtkInfovisCore-7.0.lib
vtkInfovisLayout-7.0.lib
vtkInteractionImage-7.0.lib
vtkInteractionStyle-7.0.lib
vtkInteractionWidgets-7.0.lib
vtkIOAMR-7.0.lib
vtkIOCore-7.0.lib
vtkIOEnSight-7.0.lib
vtkIOExodus-7.0.lib
vtkIOExport-7.0.lib
vtkIOGeometry-7.0.lib
vtkIOImage-7.0.lib
vtkIOImport-7.0.lib
vtkIOInfovis-7.0.lib
vtkIOLegacy-7.0.lib
vtkIOLSDyna-7.0.lib
vtkIOMINC-7.0.lib
vtkIOMovie-7.0.lib
vtkIONetCDF-7.0.lib
vtkIOParallel-7.0.lib
vtkIOParallelXML-7.0.lib
vtkIOPLY-7.0.lib
vtkIOSQL-7.0.lib
vtkIOVideo-7.0.lib
vtkIOXML-7.0.lib
vtkIOXMLParser-7.0.lib
vtkjpeg-7.0.lib
vtkjsoncpp-7.0.lib
vtklibxml2-7.0.lib
vtkmetaio-7.0.lib
vtkNetCDF-7.0.lib
vtkNetCDF_cxx-7.0.lib
vtkoggtheora-7.0.lib
vtkParallelCore-7.0.lib
vtkpng-7.0.lib
vtkproj4-7.0.lib
vtkRenderingAnnotation-7.0.lib
vtkRenderingContext2D-7.0.lib
vtkRenderingContextOpenGL-7.0.lib
vtkRenderingCore-7.0.lib
vtkRenderingFreeType-7.0.lib
vtkRenderingImage-7.0.lib
vtkRenderingLabel-7.0.lib
vtkRenderingLOD-7.0.lib
vtkRenderingOpenGL-7.0.lib
vtkRenderingVolume-7.0.lib
vtkRenderingVolumeOpenGL-7.0.lib
vtksqlite-7.0.lib
vtksys-7.0.lib
vtktiff-7.0.lib
vtkverdict-7.0.lib
vtkViewsContext2D-7.0.lib
vtkViewsCore-7.0.lib
vtkViewsInfovis-7.0.lib
vtkzlib-7.0.lib

完成之后点击确定

在“视图”中点击属性管理器(如果没有找到,可以在视图—》其他窗口;中找到),分别右击Debug|x64和Release|x64,添加现有属性表,把你下载的属性表文件夹里的红框标记文件添加进去。

将下载的rabbit.pcd文件放在项目所在的文件夹下,右击项目名,选择“打开所在的文件夹”,把文件复制到那里就可以了。复制完成之后就可以点第二步:本地Windows调试。

执行成功就会出现下图

此时已经配置成功。

注意:当时我调试一直报错:找不到pcl_io_debug.dll、pcl_common_release等文件,重启一下电脑,再在VS2015 打开刚才的项目调试就好了。主要是因为配置变量之后要重启电脑。

安装CMake

这里仍以选择安装在D:\CMake中为例。CMake的安装比较简单,记得在安装过程中选择Add to the system PATH for all users.和创造快捷方式。

测试CMake

在你安装Pcl的路径下,本文是D:\PCL 1.8.0下创建一个名为example的文件夹,example文件夹里新建名为cmake-bin的文件夹和名为source的文件夹;把下载的CMakeLists.txt和project_inliers.cpp文件放入source文件夹中。

打开CMake(如果PCL在C盘别忘了是以管理员的身份运行),点击下图中的红框,选择路径。

然后点击左下的Configure,在弹出的对话框中选择适配器Visual Studio 14 2015 Win64,其他的不改,点击Finish。底部会出现Configuring done代表完成,在点击Generate,出现Generating done生成成功。

此时解决方案就生成成功了,在D:\PCL 1.8.0\example\cmake-bin文件夹下,点击cmake-bin文件夹下的project_inliers.sln文件就可以用VS2015打开了。打开project_inliers.sln后, 并重新设置project_inliers为启动项,不然报错。

点击调试,出现下图就是成功了(网上找的,我的调试后下图一闪而过)。

猜你喜欢

转载自blog.csdn.net/BBHHTT/article/details/81156437