【问题标题】:CMake - FLANN library does not build (for PCL library)CMake - FLANN 库不构建(用于 PCL 库)
【发布时间】:2019-11-08 16:54:39
【问题描述】:

我是 CMake 新手,所以我总是更喜欢使用 CMake GUI。

我实际上是在设置点云库 (PCL)。但是,它需要一些其他依赖库,其中之一是 FLANN -> Git Link FLANN

到目前为止我所做的是:

  1. 从链接下载源:Git Link FLANN
  2. 创建了一个build目录
  3. 设置 CMake SOURCE 代码路径 - C:/PCL/flann-master

    设置 CMake 构建二进制文件路径 - C:/PCL/flann-master/build

  4. 检查了分组高级选项
  5. 配置

它给出了以下错误:

CMake Warning (dev) at CMakeLists.txt:17 (if):
  Policy CMP0054 is not set: Only interpret if() arguments as variables or
  keywords when unquoted.  Run "cmake --help-policy CMP0054" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.

  Quoted variables like "MSVC" will no longer be dereferenced when the policy
  is set to NEW.  Since the policy is not set the OLD behavior will be used.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at CMakeLists.txt:21 (if):
  Policy CMP0054 is not set: Only interpret if() arguments as variables or
  keywords when unquoted.  Run "cmake --help-policy CMP0054" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.

  Quoted variables like "MSVC" will no longer be dereferenced when the policy
  is set to NEW.  Since the policy is not set the OLD behavior will be used.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at C:/Program Files/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.13/Modules/FindPkgConfig.cmake:39 (find_package_handle_standard_args)
  CMakeLists.txt:149 (find_package)

我的问题是: 我需要做什么才能构建它?

【问题讨论】:

    标签: c++ visual-studio cmake point-cloud-library flann


    【解决方案1】:

    我以这种方式在 Windows(使用 Visual Studio 2015)上构建了 FLANN (x64):

    在主要的CMakeLists.txt 我已经像这样注释掉 lz4 部分:

    #if( NOT WIN32)
    #  find_package(PkgConfig REQUIRED)
    #  pkg_search_module(LZ4 REQUIRED liblz4)
    #endif()
    

    我已将lz4.hlz4hc.hlz4.clz4hc.c 复制到./src/cpp/flann/util 目录

    现在我已经生成了 Visual Studio 解决方案,并且在 flann 解决方案中,我已手动将 lz4.clz4hc.c 添加到源中。 (如果您想构建绑定和 FLANN 库的其他部分,请将相同的源添加到他们的解决方案中)。

    构建项目,它会正确构建。

    【讨论】:

      【解决方案2】:

      在 Visual Studio 中构建 FLANN 的最佳方法是使用 vcpkg

      另外,如果您的目标是 PCL 本身,您可以重复使用来自 CI scripts 的信息。

      步骤非常简单:

      1. 使用 vcpkg - eigen3 flann gtest qhull 安装依赖项
      2. 使用这些依赖项生成 VS 解决方案。

      【讨论】:

        【解决方案3】:

        您的错误日志中重要的一点是这一行:

        找不到 PkgConfig(缺少:PKG_CONFIG_EXECUTABLE)

        在 CMake 中使用 PkgConfig 并不是真正的跨平台解决方案,因为 Windows 没有安装 pkg-config 实用程序。 (PCL 开发人员应该在他们的 CMake 中使用find_package()。也许,这值得在他们的 Github 上打开一个错误报告。)在 Linux 上,这是一个简单的修复;你可以像这样安装pkg-config

        sudo apt-get install pkg-config
        

        但是,在 Windows 上,该过程涉及更多。在 Windows 上安装 pkg-config 有几种解决方案,记录在 here。我不确定哪个最直接适用于您的情况,因此我建议您阅读其中的一些内容。在您的 Windows 机器上成功安装 pkg-config 实用程序后,清除您的 CMake 缓存,然后重新运行。这应该会消除错误,并允许您继续构建。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-05
        • 2018-11-18
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多