解决执行find_package(PCL, ...时遇到CMakeFindDependencyMacro.cmake里find_dependency(Qt5WebKit 5.212.0 EXACT报错

写的CMakeLists.txt里有这么一句:

find_package(PCL 1.8 REQUIRED ***PONENTS ***mon 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 ***PONENTS ***mon 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)

 都有效果,可以避免上面的报错,但是都有下面的可能不同版本可能存在冲突的警告:

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版本不符合要求),这样编译就能顺利地完成,没有任何报错或警告了。

转载请说明出处内容投诉
AJ教程_站长资源网 » 解决执行find_package(PCL, ...时遇到CMakeFindDependencyMacro.cmake里find_dependency(Qt5WebKit 5.212.0 EXACT报错

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买