C++ PCL库 预编译安装与排错:common is required but boost was not found
C++ PCL库 预编译安装与排错:common is required but boost was not found
- 摘要
- 安装与排错
摘要
本篇博客记录了Windows平台上C++ PCL库通过预编译安装的方法与排错过程
环境 | 值 |
---|---|
平台 | X86 Win10 |
PCL | 15.0 realease All in One |
CMake | Windows 3.29.0 |
Visual Studio | 2022版 |
安装与排错
- 安装
Visual Studio
编译器(限制用户使用Visual Studio编译器) - 安装
CMake
项目构建管理工具(版本要求>2.8.3) - 下载
All in one
安装包和对应的PDB
文件包(用于后期单步调试)

-
安装:运行
All in one
安装包,进行安装- 3rdParty:包含第三方开源库
- bin:编译好的PCL相关的.dll动态库与示例exe文件
- cmake:包含PCL库相关的cmake配置文件,在建立工程时,利用此文件寻找第三方包和PCL对应的include和lib目录
- include:PCL的头文件
- lib:PCL的静态库和动态库.lib入口文件
- share:帮助文档
-
问题:由于Windows系统的对系统环境变量长度有限制,导致安装All In One安装包时,自动增加系统环境变量时导致出错。此时需要手动添加系统环境变量(参考:配置PCL过程中提示 path too long installer unable to modify path解决_win11系统安装pcl报错warning! path too long installer una-CSDN博客)
-
解压
PDB
压缩包并放入PCL安装目录下的bin文件夹中 -
验证是否安装成功,参考Projecting points using a parametric model — Point Cloud Library 0.0 documentation
- 新建项目文件和CMakeLists.txt文件
### project_inliers.cpp #include <iostream> #include <pcl/point_cloud.h> // for PointCloud #include <pcl/point_types.h> #include <pcl/ModelCoefficients.h> #include <pcl/filters/project_inliers.h>intmain () {pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected (new pcl::PointCloud<pcl::PointXYZ>);// Fill in the cloud datacloud->width = 5;cloud->height = 1;cloud->points.resize (cloud->width * cloud->height);for (auto& point: *cloud){point.x = 1024 * rand () / (RAND_MAX + 1.0f);point.y = 1024 * rand () / (RAND_MAX + 1.0f);point.z = 1024 * rand () / (RAND_MAX + 1.0f);}std::cerr << "Cloud before projection: " << std::endl;for (const auto& point: *cloud)std::cerr << " " << point.x << " "<< point.y << " "<< point.z << std::endl;// Create a set of planar coefficients with X=Y=0,Z=1pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());coefficients->values.resize (4);coefficients->values[0] = coefficients->values[1] = 0;coefficients->values[2] = 1.0;coefficients->values[3] = 0;// Create the filtering objectpcl::ProjectInliers<pcl::PointXYZ> proj;proj.setModelType (pcl::SACMODEL_PLANE);proj.setInputCloud (cloud);proj.setModelCoefficients (coefficients);proj.filter (*cloud_projected);std::cerr << "Cloud after projection: " << std::endl;for (const auto& point: *cloud_projected)std::cerr << " " << point.x << " "<< point.y << " "<< point.z << std::endl;return (0); }
# CMakeLists.txt cmake_minimum_required(VERSION 3.5 FATAL_ERROR)project(project_inliers)find_package(PCL 1.2 REQUIRED)include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS})add_executable (project_inliers project_inliers.cpp) target_link_libraries (project_inliers ${PCL_LIBRARIES})
- CMake项目构建
配置后出现报错,Boost的配置文件没有被正确找到,修改PCL的cmake文件(
PCL的安装路径/cmake/PCLConfig.cmake
),修改其中的find_boost
方法,去掉其中cmake寻找Boost语句的CONFIG参数
随后点击Generate,完成项目的构建
-
Visual Studio项目编译、生成可执行文件
双击
.sln
工程配置文件,通过VS进行编译运行
项目编译成功,但是由于项目配置原因,运行可执行程序时,没有找到正确可执行程序,VS报错
点击本地Windows调试器的配置项 → 配置启动项目 → 修改单启动项目 重新运行即可