CMake Error cmake/PCLConfig.cmake:56 (message): common is required but boost was not found

  • Post author:
  • Post category:其他


linux系统,使用PCL库,提示找不到Boost

##boost是C++使用非常广泛的一个开源库,昨天编译一个需要用到PCL的库,遇到下面这个问题, 这个bug的意思是pcl没有找到boost库。踩了一晚上坑才解决,分享下

CMake Error cmake/PCLConfig.cmake:56 (message):
 common is required but boost was not found
Call Stack (most recent call first):
 /lib64/cmake/pcl/PCLConfig.cmake:496 (pcl_report_not_found)
 /lib64/cmake/pcl/PCLConfig.cmake:652 (find_external_library)
 CMakeLists.txt:47 (find_package)

##boost库是很好安装的,使用下面这三条命令看是否已经安装过(本机是centos7,Ubuntu将yum换为apt-get)

yum install boost
yum install boost-devel
yum install boost-doc

##提示boost已安装相应版本,但PCL就是没有找到,打开寻找boost的Debug开关,通过log找到具体的报错原因。打开一开始报错的那个**/lib64/cmake/pcl/PCLConfig.cmake**文件,在find_package(boost …)前打开boost的debug开关,如:

set(Boost_DEBUG ON) #打开Boost的DEBUG,获取具体信息
find_package(Boost .......) #文件中原有语句

##再次编译代码,会发现在终端多出一些关于Boost的log,我的提示没有找到Boost的这些相关库

Could not find the following Boost libraries:
	boost_filesystem
	boost_thread
	boost_date_time
	boost_iostreams
	boost_serialization
	boost_chrono

##以boost_filesystem为例,安装Boost库时一般也是安装了这个库的,我找一下这个库的位置和版本:

$sudo find /usr -name "libboost_filesystem*" #先到/usr目录下搜索,没搜到再去根目录下搜索:sudo find / -name "libboost_filesystem*"
/usr/lib64/libboost_filesystem.so.1.53.0
/usr/lib/libboost_filesystem.so.1.53.0
......

##发现是安装了boost_filesystem库的,只是由于加上了版本号,PCL没找到,因此加上软链接:

cd /usr/lib64
sudo ln -s libboost_filesystem.so.1.53.0 libboost_filesystem.so

##然后重现cmake代码,如果发现没有找到的Boost库中少了这一个,那说明有用,其它的库一个个改就行。

如果还是不行就继续踩坑吧

祝您好运!



版权声明:本文为qq_34122731原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。