关于测试pcl库遇到的问题和cmake制定C++标准的问题

守給你的承諾、 提交于 2019-12-17 08:48:31

本人第一次安装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编译,然后测试程序成功通过。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!