【问题标题】:Qt 5.12.1 MSVC Static Build .qmake.superQt 5.12.1 MSVC 静态构建 .qmake.super
【发布时间】:2019-08-01 15:47:54
【问题描述】:

使用 MSVC 2015 构建 Qt 5.12.1 静态后,我可以成功构建我的所有 Qt 项目,但包含 svg 模块的项目除外。在该项目上运行 qmake 会产生 Project ERROR: Unknown module(s) in QT: svg

如果我将项目移动到 Qt 构建路径(即 QTDIR/my-project)下,它构建得很好。或者,如果我将文件 QTDIR/.qmake.super 复制到我的项目的根目录中,我也可以正常构建。

因此,似乎要使用 svg 模块进行构建,我需要项目路径层次结构中的 .qmake.super 文件。也许我错过了一步,或者需要定义一个额外的环境变量。

这是我的配置命令:

configure ^
    -static ^
    -opensource ^
    -confirm-license ^
    -nomake tests ^
    -nomake examples ^
    -debug-and-release ^
    -platform win32-msvc2015 ^
    -openssl-linked -I %OPENSSL_DIR%\include -L %OPENSSL_DIR%\lib

添加.qmake.super的内容:

QTREPOS += C:/Qt/x64/qtbase
QMAKEMODULES += C:/Qt/x64/qtbase/mkspecs/modules
QTREPOS += C:/Qt/x64/qtnetworkauth
QMAKEMODULES += C:/Qt/x64/qtnetworkauth/mkspecs/modules
QTREPOS += C:/Qt/x64/qtmacextras
QMAKEMODULES += C:/Qt/x64/qtmacextras/mkspecs/modules
QTREPOS += C:/Qt/x64/qtx11extras
QMAKEMODULES += C:/Qt/x64/qtx11extras/mkspecs/modules
QTREPOS += C:/Qt/x64/qtandroidextras
QMAKEMODULES += C:/Qt/x64/qtandroidextras/mkspecs/modules
QTREPOS += C:/Qt/x64/qtserialport
QMAKEMODULES += C:/Qt/x64/qtserialport/mkspecs/modules
QTREPOS += C:/Qt/x64/qtserialbus
QMAKEMODULES += C:/Qt/x64/qtserialbus/mkspecs/modules
QTREPOS += C:/Qt/x64/qtimageformats
QMAKEMODULES += C:/Qt/x64/qtimageformats/mkspecs/modules
QTREPOS += C:/Qt/x64/qtactiveqt
QMAKEMODULES += C:/Qt/x64/qtactiveqt/mkspecs/modules
QTREPOS += C:/Qt/x64/qtsvg
QMAKEMODULES += C:/Qt/x64/qtsvg/mkspecs/modules
QTREPOS += C:/Qt/x64/qtdeclarative
QMAKEMODULES += C:/Qt/x64/qtdeclarative/mkspecs/modules
QTREPOS += C:/Qt/x64/qtremoteobjects
QMAKEMODULES += C:/Qt/x64/qtremoteobjects/mkspecs/modules
QTREPOS += C:/Qt/x64/qtscxml
QMAKEMODULES += C:/Qt/x64/qtscxml/mkspecs/modules
QTREPOS += C:/Qt/x64/qtpurchasing
QMAKEMODULES += C:/Qt/x64/qtpurchasing/mkspecs/modules
QTREPOS += C:/Qt/x64/qtcanvas3d
QMAKEMODULES += C:/Qt/x64/qtcanvas3d/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwebsockets
QMAKEMODULES += C:/Qt/x64/qtwebsockets/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwebglplugin
QMAKEMODULES += C:/Qt/x64/qtwebglplugin/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwebchannel
QMAKEMODULES += C:/Qt/x64/qtwebchannel/mkspecs/modules
QTREPOS += C:/Qt/x64/qtgamepad
QMAKEMODULES += C:/Qt/x64/qtgamepad/mkspecs/modules
QTREPOS += C:/Qt/x64/qt3d
QMAKEMODULES += C:/Qt/x64/qt3d/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwayland
QMAKEMODULES += C:/Qt/x64/qtwayland/mkspecs/modules
QTREPOS += C:/Qt/x64/qtconnectivity
QMAKEMODULES += C:/Qt/x64/qtconnectivity/mkspecs/modules
QTREPOS += C:/Qt/x64/qtsensors
QMAKEMODULES += C:/Qt/x64/qtsensors/mkspecs/modules
QTREPOS += C:/Qt/x64/qtgraphicaleffects
QMAKEMODULES += C:/Qt/x64/qtgraphicaleffects/mkspecs/modules
QTREPOS += C:/Qt/x64/qtquickcontrols2
QMAKEMODULES += C:/Qt/x64/qtquickcontrols2/mkspecs/modules
QTREPOS += C:/Qt/x64/qtquickcontrols
QMAKEMODULES += C:/Qt/x64/qtquickcontrols/mkspecs/modules
QTREPOS += C:/Qt/x64/qtlocation
QMAKEMODULES += C:/Qt/x64/qtlocation/mkspecs/modules
QTREPOS += C:/Qt/x64/qtxmlpatterns
QMAKEMODULES += C:/Qt/x64/qtxmlpatterns/mkspecs/modules
QTREPOS += C:/Qt/x64/qtmultimedia
QMAKEMODULES += C:/Qt/x64/qtmultimedia/mkspecs/modules
QTREPOS += C:/Qt/x64/qtspeech
QMAKEMODULES += C:/Qt/x64/qtspeech/mkspecs/modules
QTREPOS += C:/Qt/x64/qtvirtualkeyboard
QMAKEMODULES += C:/Qt/x64/qtvirtualkeyboard/mkspecs/modules
QTREPOS += C:/Qt/x64/qtdatavis3d
QMAKEMODULES += C:/Qt/x64/qtdatavis3d/mkspecs/modules
QTREPOS += C:/Qt/x64/qtcharts
QMAKEMODULES += C:/Qt/x64/qtcharts/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwinextras
QMAKEMODULES += C:/Qt/x64/qtwinextras/mkspecs/modules
QTREPOS += C:/Qt/x64/qttools
QMAKEMODULES += C:/Qt/x64/qttools/mkspecs/modules
QTREPOS += C:/Qt/x64/qtscript
QMAKEMODULES += C:/Qt/x64/qtscript/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwebengine
QMAKEMODULES += C:/Qt/x64/qtwebengine/mkspecs/modules
QTREPOS += C:/Qt/x64/qtwebview
QMAKEMODULES += C:/Qt/x64/qtwebview/mkspecs/modules
QTREPOS += C:/Qt/x64/qttranslations
QMAKEMODULES += C:/Qt/x64/qttranslations/mkspecs/modules
QTREPOS += C:/Qt/x64/qtdoc
QMAKEMODULES += C:/Qt/x64/qtdoc/mkspecs/modules
QTREPOS += C:/Qt/x64/qtqa
QMAKEMODULES += C:/Qt/x64/qtqa/mkspecs/modules

【问题讨论】:

  • .qmake.super 是一个普通的文本文件,例如.qmake.stash。它的内容是什么?
  • 如您所见,该文件包含所有 Qt 模块的绝对路径。我能够使用仅包含一行 QMAKEMODULES += C:/Qt/x64/qtsvg/mkspecs/modules 的 .qmake.super 构建我的项目,因此问题似乎是特定于 svg 模块的。
  • 好吧,你根本不需要.qmake.super,如果你在你的.pro中添加以下行:QMAKEMODULES *= C:/Qt/x64/qtsvg/mkspecs/modules和cache(QMAKEMODULES, set transient super)。虽然,为什么它没有自动添加到启动脚本中仍然是一个问题。

标签: c++ qt visual-c++ visual-studio-2015 qmake


【解决方案1】:

简单修复:在配置中指定一个前缀,然后进行 nmake 安装。安装的构建在任何地方都不需要 .qmake.super。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2020-01-13
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    相关资源
    最近更新 更多