PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

1、上Github上下载所需的版本对应的ALL-IN-ONE、PDB和Source。

PCL-Github链接

ALL-IN-ONE、PDB:提供第三方库,就不用单独编译第三方库

Source:主要是编译这个源码

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

2、下载Cmake,直接下载最新的,稳定的话可以3.10及以上的版本。

Cmake下载链接

3、正常安装ALL-IN-ONE、OPENNI2(安装在3rdparty下),然后将PDB解压,里面东西全部粘贴到bin文件夹下。

4、上述全部安装好后,查看系统变量是否安装成功

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

系统变量的path变量中:

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

然后再系统变量下,添加如下变量以便后期Cmake编译

①BOOST:

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

②EIGEN

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

5、重启电脑,使环境变量生效。

6、打开cmake,选择解压后的源码文件夹,确定编译后的文件夹,将Grouped、Advanced选上,然后点击configure。

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

选择与PCL对应的VS的Win64选项,等待。

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

出现configuring done后,往上翻看红字,如果出现cmake warning就没事,如果有error,那么就有问题,需要解决,只要VS的安装都正确,一般情况下都没有error。

7、configure好后,查看VTKQhullEIGENOPENNIBOOSTFLANN这六个是否都能找到:

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

如果存在没有找到的,请手动添加。

8、点开WITH,勾选所需要的:

CUDAVTKOPENNI2QHULL

QT、PNG、PCAP这三个可以默认,反正没有他也不会编译进去

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

9、点开BUILD选项:

一定要勾选CUDAGPU,剩下的模块依实际需要选择,可以直接默认。

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

10、查看CUDA模块,CUDA_ARCH_BIN这一栏中,将2.x开头的都删掉

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

 

然后找到CMAKE_INSTALL_PREFIX这一栏,将后面的路径改为跟第6步设置的编译后的文件夹路径一致。

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

11、点击configure。Configuring done后,在红色的BUILD下,将所需要的PCL中的cudagpu模块勾选上,建议直接默认,除非有必须的。

因为有一些模块需要别的库,比如OPENNI(不是OPENNI2),要是没有安装,可能会出现问题

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

12、点击configure。此时应该所有内容都是白色,要是还有红色的出现,就查看一下,根据实际需要勾选,然后继续configure,直至全部白色

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

13、configuring done后,一定要往上翻,查看红色的字体,是否有error,如果没有,点击generate。等待generating done后,Cmake阶段完毕。

14、打开第6步中确定的编译后的文件夹,找到PCL.sln,用第6步的VS打开。

15、打开后,先确定CUDA模块是否成功

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

 

16、如果成功,没有出现错误,那么工具栏->生成->批生成,勾选ALL BUILD的debug和release,点击生成。

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

然后等待编译。

17、编译完成后,如果没有出现失败,再选择INSTALL的debug和release,点击生成,等待编译。

18、全部编译好后,如果没有提示失败,那么至此PCL源码全部编译成功。

19,打开设置好的文件夹,将bin、lib、include文件夹,复制到第3步中安装的PCL文件夹下,全部覆盖原有的binlibinclude

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

20、可能出现的问题

①提示第三方Boost的include目录下的nvcc.hpp有问题。

解决办法:打开相应文件,把下面的几行注释掉:

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

②提示源码文件下…/cuda/sample_consensus/src/sac_model_plane.cu(195): error。

解决办法:下载更高版本的PCL源码,将这一整块sample_consensus全部替换掉。

③CUDA9.0和VS2017可能存在不兼容的问题,这一块请自行去查询解决办法。这要是我为什么要用1.8.x和VS2015的原因。如果需要更高版本的PCL,那么可能会出现这个问题。

21、以下是VS中PCL的配置:

①项目属性中,按实际路径添加:

包含目录:

D:\PCL\PCL 1.8.1\include\pcl-1.8

D:\PCL\PCL 1.8.1\3rdParty\Boost\include\boost-1_64

D:\PCL\PCL 1.8.1\3rdParty\Eigen\eigen3

D:\PCL\PCL 1.8.1\3rdParty\FLANN\include

D:\PCL\PCL 1.8.1\3rdParty\Qhull\include

D:\PCL\PCL 1.8.1\3rdParty\VTK\include\vtk-8.0

D:\PCL\PCL 1.8.1\3rdParty\OpenNI2\Include

(包括:PCL的include和三方库中的include)

库目录:

D:\PCL\PCL 1.8.1\3rdParty\Boost\lib

D:\PCL\PCL 1.8.1\3rdParty\FLANN\lib

D:\PCL\PCL 1.8.1\3rdParty\OpenNI2\Lib

D:\PCL\PCL 1.8.1\3rdParty\Qhull\lib

D:\PCL\PCL 1.8.1\3rdParty\VTK\lib

D:\PCL\PCL 1.8.1\lib

(包括:PCL的lib和三方库中的lib)

链接器->输入->附加依赖项:

这里需要将所有的lib添加上,包括PCL和所有第三方库的。

建议:可以用matlab/python提前读取好所有的lib,复制到一个txt中备好,后期每次创建项目都可以直接调用。

注意:lib有些分为debug和release,有些不分。不分的都要加,分了的,按照实际调试的模式,添加相应版本的lib。

其中,pcl的可以直接分为debug和release。

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

三方库中,有-gd-的或者-d的,是debug,没有的是release(如果分了的话)。

分了两个版本的例子:

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

存在没有分的例子:

PCL源码编译:Win10+PCL1.8.1+CUDA9.0+VS2015+Cmake3.13

有其他问题大家可以随时提问~~一起讨论,一起加油!