无法使用cmake编译pcl示例

时间:2014-03-17 17:43:47

标签: compilation cmake point-cloud-library

我刚刚安装了pcl,并希望运行文件夹/pcl-pcl-1.7.1/examples中的示例。每个不同的例子都有CMakeLists.txt,所以我想我只是做一个cmake。在终端后跟make进行编译。 在终端做完之后我得到了

  

CMakeLists.txt中的CMake警告(dev):     没有cmake_minimum_required命令。一行代码,例如

cmake_minimum_required(VERSION 2.8)

所以我查看了cmake文件,奇怪的是这些cmake文件没有正常的cmake布局;以cmake_minimum_required(VERSION 2.8 FATAL_ERROR)开头,然后是其他一些东西。 我调查的CMakeLists.txt文件看起来像:

PCL_ADD_EXAMPLE(pcl_example_fast_point_feature_histograms FILES example_fast_point_feature_histograms.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_normal_estimation FILES example_normal_estimation.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_point_feature_histograms FILES example_point_feature_histograms.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_principal_curvatures_estimation FILES example_principal_curvatures_estimation.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_shape_contexts FILES example_shape_contexts.cpp
LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_spin_images FILES example_spin_images.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_rift_estimation FILES example_rift_estimation.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io)

PCL_ADD_EXAMPLE(pcl_example_difference_of_normals FILES example_difference_of_normals.cpp
                LINK_WITH pcl_common pcl_kdtree pcl_search pcl_features pcl_io pcl_segmentation pcl_sample_consensus)

我不太了解cmake,但我知道它从定义内容开始。 所以我的问题是我现在如何编译这些pcl示例?或者cmake文件有什么不同吗?

2 个答案:

答案 0 :(得分:0)

CMake允许将构建版本拆分为多个不同的CMakeLists.txt文件,这些文件不一定必须自行运行。

在您的情况下,项目可能会使用CMakeLists.txtpcl-pcl-1.7.1的{​​{3}}来包含examples中的CMakeLists.txtexamples中的CMakeLists.txt不完整,不能单独运行,只有在作为顶级CMake文件的一部分时才会运行。

您现在有两个选择:

  • 使用修改后的顶级examples来添加{{1}}中的一个。实现这一目标的最简单方法可能是从pcl随附的顶级文件开始,然后抛弃您不需要的所有内容。根据该文件中存在的CMake-voodoo的数量,您可能需要调整很多才能使其工作。
  • 正如@arrowdodger在评论中所建议的那样,只需在顶级目录上运行完整的CMake配置,然后有选择地只编译你感兴趣的目标。如果你使用的是Makefile生成器,你可以给它命令行中请求的目标的名称(也许写一个shell脚本,所以你不必记住它们)。大多数IDE还应该只允许在项目中构建目标的子集。

答案 1 :(得分:0)

您可以通过两种方式编译示例。

1)更改CMakeLists.txt,取消注释行

  

### --- [设置示例

     

包含(" $ {PCL_SOURCE_DIR} /cmake/pcl_examples.cmake")

2)如果您已经构建了一次pcl,只需转到构建目录中的CMakeCache.txt文件并进行以下更改。

  

BUILD_examples:BOOL = <强>打开

然后就这样做

make