繁体   English   中英

指定cmake使用qt4来构建opencv

[英]Specify cmake use qt4 to build opencv

由于与某些库的兼容性,我的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。 有谁能够帮助我 ? 谢谢 !

要同时使用两个Qt版本,请使用*FOUND变量。

# QtWidgets 5
find_package(Qt5Widgets)
if(Qt5Widgets_FOUND)
    set(QT5_FOUND TRUE)
    set(QT5_INCLUDE_DIRS "${Qt5Widgets_INCLUDE_DIRS}")
    set(QT5_LIBRARIES "${Qt5Widgets_LIBRARIES}")

# QtGui 4
find_package(Qt4 ${MINIMUM_REQUIRED_QT4_VERSION} COMPONENTS QtCore QtGui)
if(QT_FOUND)
    set(QT4_FOUND TRUE)
    set(QT4_INCLUDE_DIRS "${QT_INCLUDE_DIR};${QT_QTCORE_INCLUDE_DIR};${QT_QTGUI_INCLUDE_DIR}")
    set(QT4_LIBRARIES "${QT_QTCORE_LIBRARY};${QT_QTGUI_LIBRARY}")

如您所见,现在您可以同时使用两个版本,并且可以使用各自的include / library变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM