2

我想静态编译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 '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”停止。

我应该怎么办?

4

1 回答 1

2

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

  • ActivePerl (** 需要,因为它用于配置qtsdk )
  • 微软视窗 SDK 7.1
  • 微软 DirectX SDK
  • Python
  • 重症监护室
  • ...

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

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

编辑文件qmake.conf,位于qtbase\mkspecs\win32-msvc2010(如果您使用 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或者PATH=%PATH%;C:\Perl64\bin如果为 x64 编译)。

进入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-msvc20XX -opengl desktop -mp -nomake examples -nomake tests -static
(我不确定这一步是否需要,但只需几秒钟......)。

编译:nmake

另一种编译方法是使用jom并指定要使用的 CPU 内核数:C:\Qt\jom\jom.exe -j #NUMBER_OF_CORES#

您将在qtbase\lib文件夹中找到已编译的静态库,并在 qtbase \ include 的子目录中包含要包含的文件。
要使用它们,您必须在 Visual C++ 项目中使用静态运行时库/MT/MTd)。

于 2013-02-26T15:08:48.033 回答