2013-02-25 211 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)。