【问题标题】:QT 5.7 MSVC 2015 Static Builds Not WorkingQT 5.7 MSVC 2015 静态构建不起作用
【发布时间】:2016-11-16 00:39:08
【问题描述】:

我在 Windows 上使用 32 位和 64 位的 QT 5.7 MSVC 2015 静态版本时遇到问题。这些是我运行的命令和我得到的输出(也用 32 位测试过):

C:\Users\Josh>set PATH=C:\Qt\static\Qt 5.7.0 MSVC2015_Static_x64\bin;%PATH%

C:\Users\Josh>cd "\Users\Josh\Mozy Sync\ReplicatorNew\ReplicatorNew"

C:\Users\Josh\Mozy Sync\ReplicatorNew\ReplicatorNew>qmake ReplicatorNew.pro
Could not find qmake configuration file win32-msvc2015.
Error processing project file: ReplicatorNew.pro

以下是我配置 QT 静态构建的步骤:

  1. 已下载 QT 5.7 源代码并解压缩到其自己的目录。
  2. 使用 QT Creator 和 msvc2015 32 和 64 位安装 QT。
  3. 已安装 Visual Studio 2015 Community 以及所有 Visual C++ 选项 检查。
  4. 安装了 Strawberry Perl 32 位并添加到路径中。
  5. 已安装 Python 2.7.12 并添加到路径中。
  6. 已安装 Ruby 并添加到路径中。
  7. 已安装 Windows 10 SDK 并检查了安装中的所有选项。
  8. 已将 jom 安装到其自己的目录中。
  9. 已下载 openssl 源代码并按照 here 构建。
  10. 将 qtbase\mkspecs\common\msvc-desktop.conf 编辑为以下内容:

     QMAKE_CFLAGS_RELEASE    = -O2 -MT
     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
     QMAKE_CFLAGS_DEBUG      = -Zi -MTd
    
  11. 运行 32 位:

     cd "\Program Files (x86)\Microsoft Visual Studio 14.0\vc"
     vcvarsall.bat x86
    
  12. 这适用于 64 位:

     cd "\Program Files (x86)\Microsoft Visual Studio 14.0\vc"
     vcvarsall.bat amd64
    
  13. 然后是这些:

     set QMAKESPEC=win32-msvc2015
     set QTDIR=C:\Qt\Static\qt-everywhere-enterprise-src-5.7.0\qtbase
     set PATH=C:\Qt\Static\qt-everywhere-enterprise-src-5.7.0\qtbase\bin;%PATH%
     cd C:\Qt\Static\qt-everywhere-enterprise-src-5.7.0
    
  14. 对于 32 位:

     configure -debug-and-release -confirm-license -platform win32-msvc2015 -opengl desktop -static -target xp -nomake examples -no-compile-examples -nomake tests -prefix C:\Qt\static\MSVC2015_Static_x86 -openssl -L C:\OpenSSL-win32\lib -l libeay32 -l ssleay32 -I C:\OpenSSL-win32\include -qt-libpng -qt-libjpeg -qt-zlib
    
  15. 对于 64 位:

     configure -debug-and-release -confirm-license -platform win32-msvc2015 -opengl desktop -static -nomake examples -no-compile-examples -nomake tests -prefix C:\Qt\static\MSVC2015_Static_x64 -openssl -L C:\OpenSSL-win64\lib -l libeay32 -l ssleay32 -I C:\OpenSSL-win64\include -qt-libpng -qt-libjpeg -qt-zlib
    
  16. 然后运行这些:

     C:\Qt\static\jom_1_1_1\jom.exe -j 4
     C:\Qt\static\jom_1_1_1\jom.exe -j 4 install
    

还明确验证了win32-msvc2015在静态构建目录的mkspecs目录下。我将 qt 静态目录重命名为第一个代码 sn-p 中的名称。我在谷歌上找不到很多东西,所以我在这里发帖希望得到帮助。谢谢。我希望这很简单,就像我遗漏了一个目录来放入路径环境变量...

【问题讨论】:

  • 步骤 #2、#7 和 #10 是不必要的。对于 32 位版本,您确实需要为 XP Targeting from the Command Line 设置 MSVC。第 13 步第 1-3 行是不必要的。
  • 还要确保不要移动 Qt 安装:它不会工作。在 Qt 的 jom install 之后,前缀必须保留在原处。确保 qmake -query 返回正确的路径。还要确保你的 .pro 文件是健全的:也许先构建一个简单的 Qt 示例。
  • 关于您所说的不必要的步骤,我有几个问题:对于第 7 步,如果我们使用 -opengl desktop 或 -opengl dynamic 进行编译,我们是否需要 Windows 10 sdk 中包含的 directx sdk?在第 10 步中,我们是否需要使用参数 -static-runtime 进行配置才能编辑 mkspecs 文件,或者 configure 是否会自动为我们处理这些?
  • 也许,但我不记得需要用 MSVC2015 安装它。也许我做过,但我忘记了;在那种情况下,我道歉。至于步骤 #10,如果您想要静态运行时,那么是的,将其传递给配置,不要编辑 mkspecs。 -static-runtime 的全部意义在于更改这些设置。弄乱 Qt 源代码的唯一原因应该是您打算修改代码本身,或者要构建 XP 目标。如果没有一两个单行补丁,Qt 5.7 将无法为 XP 目标构建。如果它适合你,那么你就不是为 XP 构建的。 Stock Qt 5.7.0 不应该在没有补丁的情况下为 XP 构建!
  • 如果您遵循Targeting from the Command Line 的说明,然后从同一个命令shell 配置并使用XP 目标构建Qt,它应该会失败。您应该能够弄清楚补丁,或者如果不问另一个问题。如果您没有在给定的 cmd 提示符下运行“从命令行定位”,那么您无法为 XP 构建:它不适用于 XP。这适用于 Qt 本身和您的所有项目。您必须仅从此类 shell 启动 Qt Creator for XP 目标!

标签: c++ windows qt static-linking


【解决方案1】:

原来问题是我在构建之后重命名了 QT 静态构建目录,这破坏了它。快速修复:将其重命名为其原始 configure -prefix 名称。谢谢库巴!

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多