【问题标题】:Cmake can't find Qt OpenGL libraryCmake 找不到 Qt OpenGL 库
【发布时间】:2013-12-19 09:37:39
【问题描述】:

我正在尝试使用cmake 编译一个项目。给我的指示是需要 Qt 4.8。从qt-project.org/downloads 下载。编译安装Qt 4.8:

mazdak@lnxamindai> qmake -query   
QT_INSTALL_PREFIX:/usr/local/Trolltech/Qt-4.8.5
QT_INSTALL_DATA:/usr/local/Trolltech/Qt-4.8.5
QT_INSTALL_DOCS:/usr/local/Trolltech/Qt-4.8.5/doc
QT_INSTALL_HEADERS:/usr/local/Trolltech/Qt-4.8.5/include
QT_INSTALL_LIBS:/usr/local/Trolltech/Qt-4.8.5/lib
QT_INSTALL_BINS:/usr/local/Trolltech/Qt-4.8.5/bin
QT_INSTALL_PLUGINS:/usr/local/Trolltech/Qt-4.8.5/plugins
QT_INSTALL_IMPORTS:/usr/local/Trolltech/Qt-4.8.5/imports
QT_INSTALL_TRANSLATIONS:/usr/local/Trolltech/Qt-4.8.5/translations
QT_INSTALL_CONFIGURATION:/etc/xdg
QT_INSTALL_EXAMPLES:/usr/local/Trolltech/Qt-4.8.5/examples
QT_INSTALL_DEMOS:/usr/local/Trolltech/Qt-4.8.5/demos
QMAKE_MKSPECS:/usr/local/Trolltech/Qt-4.8.5/mkspecs
QMAKE_VERSION:2.01a
QT_VERSION:4.8.5

但是,在编译项目时,我收到以下错误:

root@lnxamindai> cmake .    
    -- Setting flags for GNU GCC
    -- REQUIRED_VARS  (missing:  QTMOBILITY_INCLUDE_DIR QTMOBILITY_MULTIMEDIAKIT_INCLUDE_DIR QTMOBILITY_MULTIMEDIAKIT_LIBRARY VERSION_VAR QTMOBILITY_VERSION)
    Qt QTOPENGL library not found.
    -- Buiding ManyEarsLib Library...
    -- Buiding RTAudio Library...
    -- Found jack: /usr/lib/libjack.so
    ALSA lib : -lasound -lpthread
    Qt QTOPENGL library not found.
    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    OPENGL_INCLUDE_DIR (ADVANCED)
       used as include directory in directory /home/mazdak/dev/ManyEars/manyears/QtGUI
    QTMOBILITY_MULTIMEDIAKIT_LIBRARY (ADVANCED)
        linked by target "ManyEars" in directory /home/mazdak/dev/ManyEars/manyears/QtGUI

    -- Configuring incomplete, errors occurred!

CMakeLists.txt:

(...)

IF (NOT MANYEARS_GUI_DISABLED)

    SET(QT_USE_QTNETWORK TRUE)
    SET(QT_USE_QTSVG TRUE)
    SET(QT_USE_QTXML TRUE)
    SET(QT_USE_QTSCRIPT TRUE)
    SET(QT_USE_QTOPENGL TRUE)
    SET(QT_USE_QTMULTIMEDIA TRUE)

    find_package(QtMobility COMPONENTS MultimediaKit)
    find_package(Qt4 4.8.0 QUIET)

    if (QTMOBILITY_FOUND)
        MESSAGE("QT_MOBILITY_INCLUDE_DIR : ${QTMOBILITY_INCLUDE_DIRS} QT_MOBILITY_LIB: ${QTMOBILITY_LIBRARIES}")
    ENDIF (QTMOBILITY_FOUND)


    if(QT4_FOUND AND (QT_QTMULTIMEDIA_FOUND OR QTMOBILITY_FOUND))
    include(${QT_USE_FILE})
    else(QT4_FOUND AND (QT_QTMULTIMEDIA_FOUND OR QTMOBILITY_FOUND))
        MESSAGE("WARNING : ManyEars GUI will not be compiled because Qt4 not found or obsolete. You need Qt 4.8 or higher.Try using the latest QtSDK from http://qt-project.org")
        MESSAGE("DEBUG: QT4_FOUND: ${QT4_FOUND} QT_MULTIMEDIA_FOUND: ${QT_QTMULTIMEDIA_FOUND}  QT_MOBILITY_FOUND: ${QTMOBILITY_FOUND}")
        SET(MANYEARS_GUI_DISABLED TRUE)
    endif(QT4_FOUND AND (QT_QTMULTIMEDIA_FOUND OR QTMOBILITY_FOUND))

ELSE (NOT MANYEARS_GUI_DISABLED)
    MESSAGE("ManyEars GUI disabled.")
ENDIF (NOT MANYEARS_GUI_DISABLED)


#Files excluded from package
set(CPACK_SOURCE_IGNORE_FILES
  "build"
  "bin"
  ${CPACK_SOURCE_IGNORE_FILES}
  ".svn"
)



#include files
(...)

IF (UNIX)

        #########################################
        # Packaging stuff for sources (All UNIX)
        #########################################
        SET(CPACK_SOURCE_GENERATOR "TGZ")
            SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING.TXT")
        SET(CPACK_PACKAGE_NAME "ManyEars")
        SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ManyEars")
        SET(CPACK_PACKAGE_VENDOR "Francois Grondin, Dominic Letourneau")
            SET(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.TXT")
        SET(CPACK_PACKAGE_CONTACT "blablablabla")


    (...)

ENDIF(UNIX)

(...)

INCLUDE(CPack)

这让我很困惑,不是应该安装OpenGL库吗?

【问题讨论】:

  • 你还没有显示你的 cmake 文件...
  • 我猜你的意思是 Cmakelists?
  • 请提供一个独立的例子,而不是像这样臃肿。 sscce.org。另外,我不明白为什么你应该只使用 QT_INCLUDES 时使用 OPENGL_INCLUDE_DIR (ADVANCED)。
  • @Mazze 别担心他;他给人的印象相当...严厉(您可以在他的页面上阅读他过去的cmets,以意识到这始终是他的语气,因此您不应该感到有针对性)。他要求你删除CMakeLists.txt中与QT无关的所有部分。
  • @LaszloPapp 只是因为你问 OP “你为什么要为自己辩护?”如果 OP 对您的问题感到防御,那么他们可能不想发布更多内容来澄清,这让双方都感到沮丧。我只是不确定是否有必要在友好的网站上(即使它是技术性的)具有侵略性。话虽如此,我明确表示我不会比你更进一步对此发表评论,所以你有最后的发言权。

标签: qt opengl qt4 cmake


【解决方案1】:

这让我很困惑,不是应该安装OpenGL库吗?

这不是在抱怨 OpenGL。它抱怨 Qt 的 OpenGL 模块 QtOpenGL 是另一回事。您的 Qt 自定义构建很可能不包含 QtOpenGL 模块。您必须返回构建 Qt 并特别注意启用 QtOpenGL 模块的构建。

【讨论】:

  • 刚弄明白,还以为是OpenGL。不过谢谢!这就是问题所在。
【解决方案2】:

经过一番研究,我发现I needed to install some development packages if I was compiling from the source code

apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev

在配置 Qt 源代码时,我忘记指定要安装 OpenGL 模块和多媒体工具包。我只是自然而然地运行“配置”,没有任何选项,并希望最好。

./configure --help

指定我需要-multimedia-opengl。 当我使用正确的选项执行配置时,问题就解决了。

./configure -multimedia -opengl

请注意,多媒体工具包需要安装 gstreamer。

【讨论】:

  • gstreamer 依赖于 Phonon。但是还有其他可行的声子后端,比如 VLC。仍然 gstreamer 可能是最好的选择。
  • @Mazze 所以你需要用 -multimedia 构建(不仅仅是 -opengl)来修复“Cmake 找不到 Qt OpenGL 库”?
猜你喜欢
  • 2013-09-14
  • 2020-08-08
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多