Qt4.8.0でShared/Staticライブラリを切り替える

クロスプラットホーム開発で便利なQtですが、WindowsでSharedライブラリをリンクした場合は、開発マシン以外のQtのランタイムDLLが無い環境で実行する際に面倒です。一方、Staticライブラリをリンクした場合は、実行ファイルのサイズがかなり大きくなります。

QtのSDKを普通にWindowsにインストールすると、Sharedライブラリのみがインストールされるため、必要に応じてStaticライブラリとSharedライブラリを切り替えるためには、自身でソースコードからStaticライブラリをビルドする必要があります。

前提とする環境

  • Windows 7 64bit
  • Visual Studio 2010
  • Perl環境が必要なので、ActivePerlをダウンロードして、インストールしておく。http://www.activestate.com/activeperl/downloads

Qt SDKのダウンロード

http://qt.nokia.com/downloads-jp からダウンロード

  • Qt 4.8.0 for Windows(VS 2010, 275 MB)
  • Qt Creator 2.4.0 for Windows (53 MB)

ftp://ftp.qt.nokia.com/vsaddin/ からダウンロード

  • qt-vs-addin-1.1.10.exe

インストール先

  • C:LangQt4.8.0st  Staticライブラリ
  • C:LangQt4.8.0    Sharedライブラリ

Staticライブラリのインストール

(1) qt-win-opensource-4.8.0-vs2010.exe を起動してウィザードに従ってインストール。   (インストール先は C:LangQt4.8.0st)

(2) 下記のようなqt.batファイルを作り、コマンドプロンプトから実行する。

SETLOCAL
CALL "C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat" x86
ECHO ON
SET QTBASEDIR=C:LangQt4.8.0st
SET QTDIR=%QTBASEDIR%
SET PATH=%QTDIR%bin;%PATH%
SET PATH=%SystemRoot%System32;%PATH%
SET QMAKESPEC=win32-msvc2010
%comspec%
ENDLOCAL
SETLOCAL
CALL “C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat” x86
ECHO ON
SET QTBASEDIR=C:LangQt4.8.0st
SET QTDIR=%QTBASEDIR%
SET PATH=%QTDIR%bin;%PATH%
SET PATH=%QTBASEDIR%bin;%PATH%
SET PATH=%QTBASEDIR%mingwbin;%PATH%
SET PATH=%SystemRoot%System32;%PATH%
SET QMAKESPEC=win32-msvc2010
%comspec%
ENDLOCAL[/shell]

(3) C:LangQt4.8.0mkspecswin32-msvc2010qmake.conf を編集し、下記のように変更する。

QMAKE_CFLAGS_RELEASE = -O2 -MD   =>  QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_DEBUG = -Zi -MDd  =>  QMAKE_CFLAGS_DEBUG = -Zi -MTd

(4) コマンドプロンプトで C:LangQt4.8.0st へ移動し、下記を実行する。

configure -debug-and-release -static -D _CRT_SECURE_NO_WARNINGS

(5) configure 実行後に下記のように入力。その後しばらく待つ。

o(オープンソースで使う)
y(LGPL)

(6) Staticライブラリを下記のコマンドでビルドする(かなり時間がかかる)。 単にnmakeだと、ツールまでstaticライブラリを使って再構築しようとするので、オプションを付ける。

nmake sub-src

(7) 不要なファイルを削除する。

nmake clean

(8) 削除しきれなかった不要なファイル(下記)についても、当日に作成されたものを検索して削除する。

  • Makefile*
  • *.vcxproj
  • *.vcxproj.*
  • *.sln
  • tmp

Sharedライブラリのインストール

qt-win-opensource-4.8.0-vs2010.exe を起動してウィザードに従ってインストール。   (インストール先は C:LangQt4.8.0)

Visual Studio 2010でのライブラリの切りかえ

  1. メニューから[Qt]-[Qt Option]にて、4.8.0stと4.8.0を追加。
  2. メニューから[Qt]-[Qt Project Setting]にて、4.8.0stか4.8.0を選択。
  3. メニューから[プロジェクト]-[…のプロパティ]において、C/C++のコード生成時のランタイムライブラリをMT(static) か MD(shared)に設定

Qt Creatorの設定

  1. VS2010じゃなくてQt Creatorを使いたい場合は、qt-creator-win-opensource-2.4.0.exeをインストール。その際、mingwは入れなくてもOK。
  2. インストール後、[ツール]-[オプション]の、[ビルドして実行]で「追加」ボタンをクリックし、  C:LangQt4.8.0binqmake.exe を追加。

Comments are closed.