2013-02-25 157 views
1

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

1)配置-static -debug -opensource

2)执行nmake子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'未被识别为内部或外部命令, 可操作的程序m或批处理文件。 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

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

  • 的activeperl,因为它是用来配置QTSDK
  • 的Microsoft Windows SDK 7.1
  • 微软的DirectX SDK
  • 的Python
  • ICU
  • ...

如果你打算使用一个库(如Assimp例如)在内部使用相同的库(如zlib的),你可能要覆盖这些图书馆,坐落在qtbase的\ src \的3rdParty子目录和他们的最新版本。

编辑文件configure.bat,地处qtbase目录,并注释掉行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-msvc20 XX -opengl desktop -mp -nomake examples -nomake tests -static
(我不知道需要这一步,但因为它需要短短的几秒钟......)。编号:nmake

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

你会发现在qtbase \ lib文件夹编译静态库和文件的qtbase \子目录包含包括
要使用它们,您必须在Visual C++项目中使用use static run-time libraries/MT/MTd)。