首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >windows上的PCL1.8.1 CMake问题

windows上的PCL1.8.1 CMake问题
EN

Stack Overflow用户
提问于 2017-11-26 21:03:46
回答 1查看 1.3K关注 0票数 0

我已经按照this页面上的说明在Windows10计算机上安装了PCL1.8.1。安装过程中未发生错误,安装程序已成功退出。我的CMakeLists.txt看起来像这样:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.8)
project(MyProject)

set(CMAKE_CXX_STANDARD 11)

find_package(PCL 1.8 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

set(SOURCE_FILES source/main.cpp)
add_executable(MyProject ${SOURCE_FILES})
target_link_libraries(MyProject ${PCL_LIBRARIES})

我得到以下错误:

代码语言:javascript
运行
复制
CMake Error at /cygdrive/c/Program Files/PCL 1.8.1/cmake/PCLConfig.cmake:44 (message):
  PCL can not be found on this machine
Call Stack (most recent call first):
  /cygdrive/c/Program Files/PCL 1.8.1/cmake/PCLConfig.cmake:768 (pcl_report_not_found)
  CMakeLists.txt:6 (find_package)

我正在使用Jetbrains CLion进行开发,CygWin用于GCC、CMake和GDB。当我查看PCLConfig.cmake文件的第744-769行时,我发现了一些奇怪的东西:

代码语言:javascript
运行
复制
# check whether PCLConfig.cmake is found into a PCL installation or in a build tree
if(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")
    # Found a PCL installation
    # pcl_message("Found a PCL installation")
    set(PCL_INCLUDE_DIRS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}")
    set(PCL_LIBRARY_DIRS "${PCL_ROOT}/lib")
    if(EXISTS "${PCL_ROOT}/3rdParty")
        set(PCL_ALL_IN_ONE_INSTALLER ON)
    endif(EXISTS "${PCL_ROOT}/3rdParty")

 elseif(EXISTS "${PCL_ROOT}/include/pcl/pcl_config.h")
    # Found a non-standard (likely ANDROID) PCL installation
    # pcl_message("Found a PCL installation")
    ... 

 elseif(EXISTS "${PCL_DIR}/include/pcl/pcl_config.h")
    # Found PCLConfig.cmake in a build tree of PCL
    # pcl_message("PCL found into a build tree.")
    ...

 else(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")
    pcl_report_not_found("PCL can not be found on this machine")  
 endif(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")

第一个if-condition if(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")为真。我已经检查过了。在目录C:/Program Files/PCL 1.8.1//include/pcl-1.8/pcl/中存在一个名为pcl_config.h的文件,但是由于某些原因,最后一个条件else(EXISTS "${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")完全相同,因此也是真的。这就是错误的来源。我不知道,我现在该做什么。我是否应该更改CMake文件,以便只有第一个条件为真?请帮帮我。

致以最好的问候,YpsilonZett

EN

Stack Overflow用户

发布于 2021-10-27 04:12:28

我遇到了同样的错误,并成功地解决了它。首先,它说

代码语言:javascript
运行
复制
if(EXISTS"${PCL_ROOT}/include/pcl-${PCL_VERSION_MAJOR}.${PCL_VERSION_MINOR}/pcl/pcl_config.h")

因此,请检查您是否有pcl_config.h。我发现我在/usr/include/pcl-1.12/pcl/pcl_config.h中有它。我猜是因为我的版本是1.12,太高了,PCL_VERSION_MINOR无法匹配。

我更改了代码(尽管不推荐这样做)。使用/usr/include/pcl-1.12/pcl/pcl_config.h这种路径,而不是${xxxxx},然后它就可以工作了。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47496428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档