静态编译QT

时间:2013-02-25 13:16:27

标签: qt5

我想静态编译QT,我做了以下步骤:

1)配置-static -debug -opensource

2)nmake sub-src但是在这一步中我有一些错误,比如

D:\ qt \ bin \ rcc.exe -name mimetypes D:\ qt-everywhere-opensource-src-5.0.1 \ qtbase \ src \ corelib \ mimetypes \ mimetypes.qrc -o .rcc \ debug_static \ qrc_mimetypes.cp p “D:\ qt \ bin \ rcc.exe”未被识别为内部或外部命令, 可操作程序或批处理文件。 NMAKE:致命错误U1077:'D:\ qt \ bin \ rcc.exe':返回代码'0x1' 停止。 NMAKE:致命错误U1077:'“C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ BIN \ nmake.exe“':返回代码'0x2' 停止。 NMAKE:致命错误U1077:'cd':返回代码'0x2' 停止。 NMAKE:致命错误U1077:'cd':返回代码'0x2' 停止。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

在尝试编译Qt 5.x之前,您可能需要安装一些库(取决于您要编译的模块):

        
  • ActivePerl (**需要,因为它用于配置 qtsdk
  •     
  • Microsoft Windows SDK 7.1
  •     
  • Microsoft DirectX SDK
  •     
  • 的Python
  •     
  • ICU
  •     
  • ...

如果您打算使用内部使用相同库(如zlib)的库(例如Assimp),则可能必须覆盖位于 qtbase \ src \ 3rdparty 中的这些库。子目录及其最新版本。

编辑位于 qtbase 目录中的文件 configure.bat ,并注释掉第45行:
::if not exist %QTSRC%\.gitignore goto sconf

编辑位于 qtbase \ mkspecs \ win32-msvc2010 中的文件 qmake.conf (如果您使用的是Visual Studio 2010)或 qtbase \ mkspecs \ win32-msvc2012 (如果您使用的是Visual Studio 2012):

        
  • 第9行:CONFIG += incremental flat precompile_header autogen_precompile_source debug_and_release debug_and_release_target
  •     
  • 第23行:QMAKE_CFLAGS_RELEASE = -O2 -MT
  •     
  • 第24行:QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
  •     
  • 第25行:QMAKE_CFLAGS_DEBUG = -Zi -MTd

启动 Visual Studio命令提示符:开始>节目> Microsoft Visual Studio 20XX> Visual Studio工具。
确保 Perl.exe 的路径位于 PATH 环境变量中:PATH=%PATH%;C:\Perl\bin(如果编译为x64,则为PATH=%PATH%;C:\Perl64\bin

进入 qtbase 目录:CD \Qt\5.0.1\qtbase

配置Qt以编译静态调试和发布版本:

        
  • configure -developer-build -opensource -confirm-license -platform win32-msvc2010 -mp -nomake examples -nomake tests -static(如果您使用的是Visual Studio 2010)
  •     
  • configure -developer-build -opensource -confirm-license -platform win32-msvc2012 -mp -nomake examples -nomake tests -static(如果您使用的是Visual Studio 2012)
如果您需要,可以在以后编译示例和测试 如果您打算使用 OpenGL ,请将-opengl desktop添加到命令行,否则Qt将默认使用OpenGL / ES作为移动设备的目标。
如果您的CPU不支持多核,请删除-mp选项。

返回父目录:CD ..

再次配置Qt:configure -developer-build -opensource -confirm-license -platform win32-msvc20 XX -opengl desktop -mp -nomake examples -nomake tests -static
(我不确定这一步是否需要,但因为只需几秒钟......)。

编译:{{1​​}}。

另一种编译方法是使用jom并指定要使用的CPU核心数:nmake

您将在 qtbase \ lib 文件夹中找到已编译的静态库,以及要包含在 qtbase \ include 子目录中的文件。
要使用它们,您必须在Visual C ++项目中use static run-time librariesC:\Qt\jom\jom.exe -j #NUMBER_OF_CORES#/MT)。