【发布时间】:2015-10-30 14:05:59
【问题描述】:
由于与某些库的兼容性,我的 Ubuntu 计算机同时安装了 qt4 和 qt5。 目前,我想用 qt4(用于 highgui)重建 opencv。但是 cmake 总是使用 qt5(默认版本)。 我编辑了 CMakeLists.txt
find_package(Qt4 COMPONENTS QTCORE QTGUI)
// I remove HAVE_QT5 variable
if(HAVE_QT)
status(" QT 4.x:" HAVE_QT THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
status(" QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
else()
...................
重建opencv后,我使用ldd libopencv_highgui.so检查依赖关系
libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f4e5245a000) libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f4e51e0d000) libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f4e515e4000) libQt5Test.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Test.so.5 (0x00007f4e513bb000) libQt5OpenGL.so.5 => /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007f4e51157000)
Highgui 仍然链接到 Qt5。 有谁能够帮我 ?谢谢!
【问题讨论】:
-
您是否清除了 CMAKE 缓存?从脚本中删除变量不会将它们从缓存中删除。看看
cmake -LA。 -
我误解了 CMakeLists.txt 中的变量 HAVA_QT。如果 cmake 命令行参数包含 WITH_QT=ON,则此变量设置为 true。我认为 cmake 总是使用默认的 qmake,所以我的解决方案是暂时删除 qt5。