PCL编译配置

环境:WIN10, Visual Studio 2019, PCL1.10.1

1. 官网下载 有3个文件

PCL-1.10.1-AllInOne-msvc2019-win64.exe,包括PCL库和它所依赖的第三方库(除了QT)

pcl-1.10.1-pdb-msvc2019-win64.zip,visual studio debug pdb文件

pcl-pcl-1.10.1.zip,PCL源码

2. 由源码编译PCL

先安装PCL-1.10.1-AllInOne-msvc2019-win64.exe,然后解压pcl-1.10.1-pdb-msvc2019-win64.zip文件到PCL/bin目录下,即可得到预编译好的PCL库。为了后续方便学习PCL内部实现,我从源码编译PCL,参考自官网说明 Compiling PCL from source on Windows

首先准备PCL依赖的第三方库,为了省事,可直接安装PCL-1.10.1-AllInOne-msvc2019-win64.exe,且取消勾选PCL

image

使用CMake配置工程

image

依次设置Boost, Eigen, FLANN, Qt, VTK, QHull, OpenNI库的路径;

另外默认没有勾选BUILD_visualization,勾选上;

修改 CMAKE_INSTALL_PREFIX路径,CMAKE_INSTALL_PREFIXD:/work/siggraph/pcl-1.10.1/install/PCL(也可以不修改,默认在C盘,在VS执行install时需要以管理员权限比较麻烦)

打开PCL.sln开始编译,然后运行INSTALL将PCL库拷贝到INSTALL制定目录下。

3. PCL HelloWorld程序

参考自 Using PCL in your own project

如下目录新建文件CMakeLists.txt, main.cpp和build文件夹

image

CMakeLists.txt文件


cmake_minimum_required(VERSION 2.6 FATAL_ERROR)

project(helloworld)

find_package(PCL 1.3 REQUIRED COMPONENTS common io)

include_directories(${PCL_INCLUDE_DIRS})

link_directories(${PCL_LIBRARY_DIRS})

add_definitions(${PCL_DEFINITIONS})

add_executable(helloworld main.cpp)

target_link_libraries(helloworld ${PCL_LIBRARIES})

main.cpp文件(拷贝自PCL源码 pcl-1.10.1\doc\tutorials\content\sources\pcd_write)


#include <iostream>

#include <pcl/io/pcd_io.h>

#include <pcl/point_types.h>

int

main(int argc, char** argv)

{

    pcl::PointCloud<pcl::PointXYZ> cloud;

    // Fill in the cloud data

    cloud.width = 5;

    cloud.height = 1;

    cloud.is_dense = false;

    cloud.points.resize(cloud.width * cloud.height);

    for (std::size_t i = 0; i < cloud.points.size(); ++i)

    {

        cloud.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);

        cloud.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);

        cloud.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);

    }

    pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);

    std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl;

    for (std::size_t i = 0; i < cloud.points.size(); ++i)

        std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;

    return (0);

}

执行CMake配置项目,注意指定PCL_DIR为之前INSTALL路径 D:/work/siggraph/pcl-1.10.1/install/PCL/cmake

打开helloworld.sln,编译运行

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。