VC++ 2008 Expressを使ってQtの環境設定とサンプルコンパイル
ご利用のブラウザは、JavaScript が無効 となっていませんか?
このサイトでは、コンテンツの一部が非表示 、あるいは、コメント、お問い合わせの投稿ができない 、検索ができない ことがあります。
概要 :
Qt(キュート)が正式にLGPLとして公開を始めて3ヶ月ほどになります。少しずつ、LGPLの効き目があり、ありらこちらにQtに関する記事を見かけるようになりました。
QtがGPLになったころから、Qtを使ってみたいと思ってはいたものの、中々、手が出せずにいました。
一番のQtの魅力は、クロスプラットフォームにあります。そのクロスプラットフォームでの開発は、一般的には、それほどありません。
また、あったとしても、この日本では、Javaでの開発が多いことでしょう。
クロスプラットフォームというよりWEBアプリの開発の方が、メリットも多く、Javaの開発者が、Qtの開発者より圧倒的に多いのも現実です。
Javaの話は、それぐらいにして、今度こそ、Qt(キュート)をやってみようと思い、まずは、環境整備・・・・を始めました。
ついては、そのQtの開発環境の整備について記述したいと思います。
※これをやるには、やたらと時間がかかりますので、ゆっくり構えてください。
(もし、Qtをちょっと見てみたいだけなら、mingwで試されることをお勧めします。既にコンパイル済みのものが同梱されていますので、あえて環境を整備する手間が省けます。)
関連記事:
qmake でVC++ 2008 Expressのプロジェクトファイルを作成する
ここで使用したサンプルソースコード:
Qt LGPL 版の使用に際して
LGPLに関する注意点の
日本語訳 が某取り扱い会社様からホームページに掲載されていました。
さて、ライセンスは、LGPLになりましたが、LGPLでは、リバースエンジニアリングを許可するようになっていますので、その項がはっきり記載されています。
ご利用になる場合は、しっかりとライセンスを確認してご利用されるようご注意申し上げておきます。
LGPLは、public domainとは違います。GPLもLGPLも、商用で使ってはいけないとは、一言も書いていません。ただ、GPLの場合は、
GPLのものを使って作成したプログラムは、自動的にGPLとなり、ソースコードを公開する義務が生じます。そのため、商用では使いづらいものに
なっています。
その制限を、少しだけゆるくしたのが、LGPLです。いろいろと見解もありますが、一応、一般的な見解(先の日本語訳)に沿って
記述すれば、LGPLのものをスタティックリンクしたものは、GPLと同じようにソースコードの公開義務が生じますが、
そうでない場合(他のライセンス条項を満たしている場合)、独自で開発した部分のソースコードは、公開する必要がなくなるというものです。
ただし、LGPLのオリジナルソースコードを編集して使った場合は、それは、例外なく公開する義務が生じます。
まずは、コンパイル
ダウンロードしたQtをインストールします
インストールは、単純にインストーラを実行してインストールします。
インストールの詳細は、各インストールの画面に従い実施してください。
インストール先は、経験上、日本語や空白、'-'などの特殊文字を使わないディレクトリ名が良いでしょう。
今回は、"C:\Qt"へインストールすることにします。
以降の説明や環境設定の中で出てくる、
%Qtインストールディレクトリ% は、ここでインストールしたディレクトリになります。
-- 参考 : CPU:2.4 GHz Memory:1.5 Gbyte でインストールを終えるまで
約15分 程度かかります...気長に待ちましょう...
インストールを終えたら、以下の手順でコンパイルを行います。
VC++ 2008 Expressのスタートアップメニューの中の"Visula Studio 2008 コマンドプロンプト" を開きます
コマンドプロンプトから、%Qtインストールディレクトリ%\Qt へカレントディレクトリを移動します
1
2
C:\Program Files\Microsoft Visual Studio 9.0\VC> cd C:\Qt\Qt
C:\Qt\Qt>
コンパイラにVC++2008を指定します
1
2
C:\Qt\Qt> set QMAKESPEC=win32-msvc2008
C:\Qt\Qt>
Qtの環境部分をまずはコンパイルします
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
C:\Qt\Qt> configure -debug-and-release -D _CRT_SECURE_NO_WARNINGS
Which edition of Qt do you want to use ?
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
o
This is the Qt for Windows Open Source Edition.
You are licensed to use this software under the terms of
the GNU General Public License ( GPL) version 3
or the GNU Lesser General Public License ( LGPL) version 2.1.
Type '3' to view the GNU General Public License version 3 ( GPLv3) .
Type 'L' to view the Lesser GNU General Public License version 2.1 ( LGPLv2.1) .
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.
Do you accept the terms of the license?
y
---- この'y'を入力後、環境のコンパイルが始まります...
:
:
:
C:\Qt\Qt>
-- 参考 : CPU:2.4 GHz Memory:1.5 Gbyte で約1時間 程度かかります...気長に待ちましょう...
Qtのライブラリとサンプルを一挙にコンパイルします
1
2
3
4
5
C:\Qt\Qt> nmake
:
:
:
C:\Qt\Qt>
-- 参考 : CPU:2.4 GHz Memory:1.5 Gbyte で約16時間 程度かかります...気長に待ちましょう...
-- 誤記ではありません。約16時間 です。
開発環境を整える
[ マイコンピュータ ] - [ プロパティ ]で環境設定を行います。
環境変数名 値
QMAKESPEC win32-msvc2008
PATH %path%;C:\Qt\Qt\bin\.;C:\Qt\Qt\lib\.;C:\Qt\bin\.
-- C:\Qt\Qt\bin\ : Qt - LibのCore DLLなどのディレクトリ
-- C:\Qt\Qt\lib\ : Qt - LibのDebug版などのDLLのディレクトリ
-- C:\Qt\bin\ : Qt - 基本exe/dllのディレクトリ
設定を終えたら、OKボタンをクリックします。
エクスプローラから、サンプルを実行してみてください。
うまく実行できていれば、環境が正しく設定できていると思います。
正しく、動かなかった場合は、先の設定に誤りがないか再度確認してみてください。
C:\Qt\Qt\examples\widgets\analogclock\release\analogclock.exe
以下のような画面が表示されればOKです。
VC++で"Hello world"画面を作ってみよう
1
2
3
4
5
6
7
8
9
10
11
12
#include "QApplication"
#include "QPushButton"
int main( int argc, char * argv[ ] )
{
QApplication app( argc, argv) ;
QPushButton hello( "Hello world" ) ;
hello.resize ( 100 , 30 ) ;
hello.show ( ) ;
return app.exec ( ) ;
}
上記のソースコード(sample.cpp)をコマンドラインからコンパイルしてみましょう。
VC++ 2008 Expressのスタートアップメニューの中の"Visula Studio 2008 コマンドプロンプト"を開きます
コマンドプロンプトから、サンプルソースのあるディレクトリ( 例) c:\temp とします )へカレントディレクトリを移動します
1
2
C:\Program Files\Microsoft Visual Studio 9.0\VC> cd C:\temp
C:\temp>
コマンドプロンプトから、qmakeを実行して、VC用のプロジェクトファイルを作成し、コンパイルを実施します
1
2
3
4
5
6
7
C:\temp> qmake -project
C:\temp> qmake temp.pro
C:\temp> nmake
:
: -- コンパイル実施
:
C:\temp>
1行目:
カレントディレクトリ配下のソースコードを自動検索し、"カレントディレクトリ名.pro"の名前でQt用のプロジェクトファイルを作成します。
2行目:
debug,releaseディレクトリを作成します。
debug,release用のMakeFileを作成します。
-- Makefile.Debug,Makefile.Release
デフォルトのMakeFileを作成します。
-- Makefile
3行目:
ビルド実施
-- デフォルトではdebugのビルドが実施されます。
release版をビルドしたい場合は、
nmake release
とします。
debug/release版共にビルドしたい場合は、
nmake all
とします。
動作させてみます
作成したsample.exeを実行してみてください。以下の画面が表示されたらOKです。
上記のソースコード(sample.cpp)をIDEを使ってコンパイルしてみましょう。
VC++ 2008 Expressを立ち上げます
IDEの環境設定を行います
[ツール]->[オプション]->[プロジェクトおよびソリューション]->[VC++ ディレクトリ]-> ディレクトリを表示するプロジェクト: [インクルード ファイル]で追加
%Qtインストールディレクトリ%\Qt\Include (例:C:\Qt\Qt\include)
[ツール]->[オプション]->[プロジェクトおよびソリューション]->[VC++ ディレクトリ]-> ディレクトリを表示するプロジェクト: [ライブラリ ファイル]で追加
%Qtインストールディレクトリ%\Qt\lib (例:C:\Qt\Qt\lib)
空のMakeFileプロジェクト(Sample)を作成します
メニューの [ファイル] - [新規作成] - [プロジェクト] をクリックします。
画面左:全般、画面右:メイクファイルプロジェクト を選択します。
プロジェクトのnmakeの仕方を変更します
[プロジェクト]->[プロパティ]->[構成プロパティ]->[Nmake] を開きます。
以下のコマンドラインに記述します。
qmake -project
qmake
nmake debug
入力できたらOKをクリックします。
※最後の行は、release版では、"nmake release"を指定します。
1行目を"qmake -project -t vcapp -o hello.pro"のようにプロジェクト名(hello.pro )を指定することもできます。
このように指定した場合、実行ファイル名もhello.exe のように変化します。
ここでは、コマンドラインと同じようにするために、省略して説明を続けています。
参考:
クリーンコマンドラインは、"nmake debug-clean"のようになります。
$(ConfigurationName)\vcsample.exe
のようにデフォルトでは、実行ファイル名のみ指定されていますが、"$(ConfigurationName)\"を前につけてあげます。
また、実行ファイルは、"直下のディレクトリ名.exe"となるので注意します。
※Qtの吐き出すMakefileにあわせてあげます。
※同じ要領で、releaseのビルド方法も指定します。
先で用いたsample.cppをコピーし、プロジェクトに追加します
-- sample.cppファイルは、このプロジェクトディレクトリの直下になければなりません。
ビルドを実施してみてください
--- sample.exeが作成されたらOKです。
動作させてみます
作成したsample.exeを実行してみてください。以下の画面が表示されたらOKです。
IDEを使って実行する場合、必ず、以下の画面が表示されます。
これは、無視しても良いでしょう。
上記の画面は、
[ツール]->[オプション]->[プロジェクトおよびソリューション]->[ビルド/実行]->
実行時に、プロジェクトが古い形式のとき:
のいずれかを指定すると、出力されなくなります。
元に戻したい場合は、
"ビルド時に確認する" を設定すれば、元に戻ります。
IDEを使う一番のメリットはデバッグだと思います。
デバッグ版では、当然、デバッグ(ブレイク)もできます。
以下のようにブレイクして、詳細情報をのぞくこともできます。
IDEの設定で、行っているようにビルドするたびに毎回、qmakeを実行する必要はありません。
プロジェクトに変更があった場合に、実行すればよいのですが、よく忘れてしまいますので、ビルドのたびに実行するようにしています。
また、細かい検証を行っていませんが、ディレクトリの配下にソースコードがあれば問題ないのですが、それが異なる場合に問題となるでしょう。
更に、個別のlibパスなどを追加設定したいときなど、色々と問題はあります。
関連記事:
qmake でVC++ 2008 Expressのプロジェクトファイルを作成する
環境を作るのに、筆者は、1日がかりでした。
この記事をご覧になっている方々が、少しでも、時間の短縮になれば幸いです。
実際に、どれくらい使えそうか・・・は、まだまだ、使ってみないとなんともいえませんが、ソースコードの量からすると、Qtは、結構、少なくできるような感じを受けました。
参考までに、release版の最適化オプションは、O2(実行速度)を使っています。
上記のサンプル実行ファイルサイズ:8K
※動作させるうためには、MFC同様、QtのDLLを一緒に配布しないといけません。
Qt:QTGUI4.DLL(7MB),QTCORE4.DLL(2MB),msvcrt??.dll(0.3MB)
MFC:mfcxx.dll(1MB),msvcpxx.dll(0.5MB),msvcrxx.dll(0.4MB),msvcrt??.dll(0.3MB)
配布するには、少し大きすぎない?
もっと、Qt関連について詳しく知りたい方は、以下の本なども良いと思います。
Qtに関する日本語の本が少ないですね。「入門書」は、さすがに、このページを読まれるくらいの方は不要だと思います。
やっぱり、本+ネット+試してみる!!の3本柱でやっていく以外にないように思います。
2011年04月23日 @ 07:41:22
こんにちは
QT Creatorを使用して間もないのでこのサイトはとても参考にさせていただいております。
現在、dllを外部参照させようと文献をあさったり検索したりしているのですが、なかなか情報が少なく上手くいっておりません。お手数ですがお教えいただければ幸いです。
よろしくお願い致します。
2011年04月26日 @ 23:46:32
基本的なクラスなら QLibrary で Win32 のLoadLibrary と同じことができた?と思いますよ。
(プラグインのような)動的リンクをするができたと思います。
DLL側は、QT Creatorで C++ライブラリ作成 – 共有 でプロジェクトを作成するとOK?だったと思います。