写的CMakeLists.txt里有这么一句:
find_package(PCL 1.8 REQUIRED COMPONENTS common io visualization)
在执行cmake 命令时报下面的错:
CMake Error at /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package):
Found package configuration file:
/root/anaconda3/lib/cmake/Qt5WebKit/Qt5WebKitConfig.cmake
but it set Qt5WebKit_FOUND to FALSE so package "Qt5WebKit" is considered to
be NOT FOUND. Reason given by package:
Qt5WebKit could not be found because dependency is required to have exact
version 5.15.x.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/cmake/Qt5WebKitWidgets/Qt5WebKitWidgetsConfig.cmake:86 (find_dependency)
/usr/lib/cmake/vtk-6.3/Modules/vtkGUISupportQtWebkit.cmake:13 (find_package)
/usr/lib/cmake/vtk-6.3/vtkModuleAPI.cmake:45 (include)
/usr/lib/cmake/vtk-6.3/vtkModuleAPI.cmake:15 (vtk_module_load)
/usr/lib/cmake/vtk-6.3/vtkModuleAPI.cmake:132 (_vtk_module_config_recurse)
/usr/lib/cmake/vtk-6.3/VTKConfig.cmake:80 (vtk_module_config)
/usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:501 (find_package)
/usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:656 (find_VTK)
/usr/lib/x86_64-linux-gnu/cmake/pcl/PCLConfig.cmake:847 (find_external_library)
CMakeLists.txt:13 (find_package)
看了一下原因是我环境下有多个不同版本的cmake:
/usr/lib/x86_64-linux-gnu/cmake
/root/anaconda3/lib/cmake
对应有多个Qt5Webkit 配置文件, 而/usr/lib/x86_64-linux-gnu/cmake/Qt5WebKitWidgets/Qt5WebKitWidgetsConfig.cmake里第86行的代码是:
find_dependency(Qt5WebKit 5.212.0 EXACT )
就是这句话需要找Qt5WebKit 5.212.0,可它搜索的是
/root/anaconda3/lib/cmake/Qt5WebKit/Qt5WebKitConfig.cmake
实际上,应该找的是
/usr/lib/x86_64-linux-gnu/cmake/Qt5WebKit/Qt5WebKitConfig.cmake
实验了一些网上说的改变设置CMAKE_MODULE_PATH和cmake默认搜索的这些路径:
PATH
CMAKE_PREFIX_PATH
CMAKE_FRAMEWORK_PATH
CMAKE_APPBUNDLE_PATH
都没有效果!后实验找到了这些办法有效:
1.在
find_package(PCL 1.8 REQUIRED COMPONENTS common io visualization)
前增加:
include(CMakeFindDependencyMacro OPTIONAL RESULT_VARIABLE _CMakeFindDependencyMacro_FOUND)
find_dependency(Qt5WebKit 5.212.0 EXACT)
或者简单增加
find_package(Qt5WebKit)
或者设置 Qt5WebKit_DIR
set(Qt5WebKit_DIR /usr/lib/x86_64-linux-gnu/cmake/Qt5WebKit)
都有效果,可以避免上面的报错,但是都有下面的可能不同版本可能存在冲突的警告:文章来源:https://www.toymoban.com/news/detail-821938.html
CMake Warning at CMakeLists.txt:76 (add_executable):
Cannot generate a safe runtime search path for target gridcluster because
files in some directories may conflict with libraries in implicit
directories:
runtime library [libuuid.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libfreetype.so.6] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libexpat.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libpng16.so.16] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libtiff.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libsqlite3.so.0] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libsz.so.2] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libxml2.so.2] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [liblz4.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libQt5OpenGL.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libQt5Sql.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libQt5WebKitWidgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libQt5Widgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
Some of these libraries may not be found correctly.
CMake Warning at CMakeLists.txt:76 (add_executable):
Cannot generate a safe dependent library path for target gridcluster
because files in some directories may conflict with libraries in implicit
directories:
runtime library [libQt5OpenGL.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libQt5Sql.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
runtime library [libQt5WebKitWidgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/root/anaconda3/lib
Some of these libraries may not be found correctly.
-- Generating done
这些警告可以忽略也可能需要重视,视情况而定,但是我为了避免混编进对不同版本的so库的引用,导致程序运行时可能会莫名其妙地崩溃(以前遇到过类似情况),我还是执行cmake时先暂时把/root/anaconda3/lib下的cmake目录整个移走(因为明显是anaconda3下的Qt5WebKit版本不符合要求),这样编译就能顺利地完成,没有任何报错或警告了。文章来源地址https://www.toymoban.com/news/detail-821938.html
到了这里,关于解决执行find_package(PCL, ...时遇到CMakeFindDependencyMacro.cmake里find_dependency(Qt5WebKit 5.212.0 EXACT报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!