PCL cmake报错,The following configuration files were considered but not accepted:

博主购买《点云库PCL从入门到精通》,安装PCL后用cmake跑代码报错。报错原因是cmake找不到VTK,且使用的32位编译器与系统、PCL、cmake的64位不匹配,3.14.2版本的cmake generator无64位vs选项。解决方案是卸载当前cmake,换回3.10.2版本并选vs15 2017 win64。

买了《点云库PCL从入门到精通》,第一个例子就是安装pcl,在cmake跑一下代码,检查PCL是否安装完成,然后就报错了。
搜了很多地方都没有找到解决方案,现在记下来。

错误:
初次安装PCL1.8.1,使用cmake 3.14.2,跑代码之后报错

  Could not find a configuration file for package "VTK" that is compatible 
  with requested version "". 

  The following configuration files were considered but not accepted: 

还报错:

visualization is required but vtk was not found

还报错:

VTK_DIR-NOTFOUND

总结一下就是:
cmake找不到VTK,可能是VTK_DIR有问题。
在我按照大部分博客的指导下,改了VTK_DIR后依旧报错
原因是找到的VTK版本被无视了。。。我也是服了????

原因:
1.因为cmake使用的generator是vs2017,默认指向的是32位编译器,而我的电脑,pcl,cmake安装的全部都是64位。
2.cmake3.14.2版本的generator是没有64位的vs选项的,必须要换回之前的cmake版本才可以

解决方案:
1.卸载目前的cmake,换回之前的版本,我安装的是cmake3.10.2,在generator中选择vs15 2017 win64
注意:64位电脑选项一定要后面带一个win64,不然默认就是32位编译

参考:
http://vtk.1045678.n5.nabble.com/Problem-depending-on-VTK-gt-8-1-with-CMake-3-12-1-and-VTK-8-1-1-on-Win-10-MSVC-2017-td5748387.html

感谢:
感谢我会英语,有耐心的把人家的帖子看完了。全网也就只有这一贴报的是和我一样的错误。现在写成中文版,感谢帖子的楼主。

<think>嗯,用户遇到了一个CMake的问题,具体是在构建项目时,CMake找不到与请求的PCL版本1.12兼容的包,而当前发现的版本是1.8.1和1.9.1。用户需要解决这个问题。首先,我需要回忆一下CMake在查找包时的机制,以及如何处理版本不兼容的情况。 根据用户提供的引用内容,比如引用[1]和[3],当CMake找不到某个包时,通常是因为路径设置不正确,或者没有正确安装对应的开发包。用户的问题中提到了PCL(点云库),所以可能需要检查PCL的安装路径是否正确,以及CMake是否能够找到正确的配置文件。 首先,用户需要确认系统中是否已经安装了PCL 1.12版本。如果安装的是旧版本,比如1.8.1或1.9.1,那么需要升级到1.12或者调整项目所需的版本。如果用户确实需要1.12版本,但系统中没有安装,那么可能需要从源码编译安装或者通过包管理器获取。 其次,如果系统中安装了多个版本的PCLCMake可能会找到错误的版本。这时候需要明确指定PCL的安装路径,通过设置PCL_DIR变量指向正确版本的cmake配置文件所在的目录。例如,引用[2]中提到了设置Qt6_DIR的路径,类似地,设置PCL_DIR到正确的位置可能解决问题。 另外,用户提到的错误信息显示找到了1.8.1和1.9.1版本,但需要1.12。这可能是因为这些旧版本残留在系统中,而CMake在搜索路径中找到了它们。这时候需要清除旧版本的配置文件,或者调整CMAKE_PREFIX_PATH,确保CMake优先搜索正确版本的路径。 还有可能需要检查CMakeLists.txt中的find_package命令是否正确指定了版本。例如,使用find_package(PCL 1.12 REQUIRED)来明确要求版本1.12。同时,确保语法正确,比如组件是否指定正确,是否有拼写错误等。 此外,引用[3]中提到,可以添加安装前缀到CMAKE_PREFIX_PATH或者设置OpenCV_DIR变量。同样的方法适用于PCL,即设置PCL_DIR变量指向正确版本的cmake文件所在目录,或者将PCL的安装路径添加到CMAKE_PREFIX_PATH中。 总结可能的解决步骤:1. 确认是否安装了正确版本的PCL;2. 如果安装了多个版本,设置PCL_DIR指向正确版本;3. 更新CMakeLists.txt中的版本要求;4. 清理旧版本残留;5. 使用CMAKE_PREFIX_PATH指定搜索路径。需要将这些步骤详细解释给用户,并提供具体的命令示例,比如如何设置变量,如何检查安装路径等。 另外,用户可能需要知道如何查找PCL的安装路径。例如,在Linux系统中,可以使用find命令搜索PCLConfig.cmake文件的位置,或者在Windows中检查安装目录。同时,提醒用户在修改后重新运行CMake生成步骤,比如删除构建目录并重新配置。 最后,生成相关问题,帮助用户进一步理解可能遇到的类似问题,比如如何处理其他依赖库的版本不兼容,如何调试CMake的查找过程,或者如何管理多个版本的库共存的情况。</think>### 分步解决方案 #### **问题分析** CMake报错`find_package`无法找到与请求版本`1.12`兼容的PCL包,但检测到已安装版本`1.8.1`和`1.9.1`。此问题通常由以下原因导致: 1. 系统中未安装PCL 1.12,或安装路径未被CMake识别。 2. 存在多个PCL版本,CMake优先检测到旧版本。 3. CMakeLists.txt中版本配置或路径设置错误。 --- #### **解决方法** ##### **1. 确认PCL 1.12的安装状态** - **步骤**: - 检查系统中是否已安装PCL 1.12。若未安装,需通过以下方式安装: - **源码编译**:从[PCL官方仓库](https://github.com/PointCloudLibrary/pcl)下载1.12版本并编译。 - **包管理器**(Linux):使用`apt`或`conda`等工具安装指定版本,例如: ```bash sudo apt install libpcl-dev=1.12.1+dfsg-1 # Ubuntu示例 ``` - 若已安装但路径未正确配置,需手动指定路径。 ##### **2. 设置PCL_DIR环境变量** - **步骤**: - 找到PCL 1.12的CMake配置文件路径(通常为`<PCL安装目录>/share/pcl-1.12`)。 - 在CMakeLists.txt**前**添加路径设置: ```cmake set(PCL_DIR "/path/to/pcl-1.12/share/pcl-1.12") # 替换为实际路径 ``` - 或通过命令行传递参数: ```bash cmake -DPCL_DIR="/path/to/pcl-1.12/share/pcl-1.12" .. ``` ##### **3. 清理旧版本干扰** - **步骤**: - 若系统中存在多个PCL版本,需删除或禁用旧版本: - **Linux**:使用`sudo apt remove libpcl-dev=1.8.1`卸载旧版本。 - **Windows**:删除旧版本的安装目录或环境变量中的路径。 - 确保CMake搜索路径中仅包含PCL 1.12的路径。 ##### **4. 更新CMakeLists.txt配置** - **步骤**: - 检查`find_package`命令是否明确指定版本: ```cmake find_package(PCL 1.12 REQUIRED) # 强制要求1.12版本 ``` - 若需兼容多版本,可添加版本范围: ```cmake find_package(PCL 1.12...2.0 REQUIRED) # 接受1.12到2.0之间的版本 ``` ##### **5. 验证配置** - **步骤**: - 重新生成构建目录并运行CMake: ```bash rm -rf build/ && mkdir build && cd build cmake .. -DPCL_DIR="/path/to/pcl-1.12/share/pcl-1.12" ``` - 检查输出是否包含`Found PCL: 1.12`。 --- #### **补充说明** - 若问题仍未解决,可通过`CMAKE_PREFIX_PATH`全局指定搜索路径[^3]: ```cmake set(CMAKE_PREFIX_PATH "/path/to/pcl-1.12;${CMAKE_PREFIX_PATH}") ``` - 调试CMake包搜索过程: ```bash cmake --debug-find-package=PCL .. ``` --- ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值