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

写的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)

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

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

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值