[英]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.