本人第一次安装pcl库,在安装过程中,基本没有什么大问题,并且成功make && make install,但是在网上找程序进行pcl测试的时候,通过CMakeLists.txt文件进行了编译,然后make的时候一直报错,如下:
/usr/include/pcl-1.9/pcl/register_point_struct.h:97:10: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type
std::enable_if_t<!std::is_array<T>::value>
/usr/include/pcl-1.9/pcl/impl/point_types.hpp:1696:25: error: use of ‘auto’ in lambda parameter declaration only available with -std=c++14 or -std=gnu++14
error: ‘type’ is not a member of ‘pcl::traits::datatype<pcl::_RGB, pcl::fields::rgba>
/usr/include/pcl-1.9/pcl/point_types.h:365:1: error: ‘plus’ is not a member of ‘pcl::traits’
一开始看到有std的问题,觉着是g++版本问题,但是一致不清楚是哪里的问题,网上一般暂时还没有相关的问题,所以我甚至是重新make clean,然后重新cmake文件(注:该地方出现了一个小插曲,因为make一直不成功,然后我make clean&&cmake clean之后,cmake也一致报错了,目前没有知道什么原因,最有效的办法是要么直接删除build文件夹,要么就是将整个工程文件夹全部删除,然后重新解压,再mkdir build....cmake就没问题,多次试验有效。),再次make && make install,同样再一次通过,但是在测试的时候依然会报上述问题。
经过一遍遍排查,发现再进行cmake的时候,没有指定c++版本,所以默认的c++版本就会导致上述问题,这种问题同样类似于在g++进行编译程序的时候需要指定-std=c++14...,所以我们需要在CMakeLists.txt添加制定相应的C++版本,具体语法应该是下边这句话:
set(CMAKE_CXX_STANDARD 14)
其中,14用来指定是C++14编译,然后测试程序成功通过。
来源:CSDN
作者:sinat_35775571
链接:https://blog.csdn.net/sinat_35775571/article/details/103568982