Windows 10にQtをインストール


Windows10上でC++からQtを使えるようにする。

■環境

 - PC : Windows 10, 64bit, Visual Studio 2017

■前提条件

 以下がインストールされていること
 - Git
 - Python2.7
 - Perl
   参考:Windows 10にPerlを導入
     https://qiita.com/tomtum/items/ce10b30c82f0ae67d984
 - make
   参考:GnuWin32でインストールできます
     http://gnuwin32.sourceforge.net/packages/make.htm

■手順

1.Qtのソースコードをダウンロード

cmd
$ git clone git://code.qt.io/qt/qt5.git

2.最新のLTSのリリースバージョンでcheckout(2020/01/06時点)

cmd
$ cd qt5
$ git checkout v5.12.6

※追記※ご指摘頂いたのですが、現在のソースコードの最新バージョンはv5.14.0だったようです。LTSはv5.12.6ですが、各自お求めのversionでcheckoutして下さい。version情報は下記リンクに記載されています。
【Branches - Qt Wiki】
https://wiki.qt.io/Branches

3.必要なサブモジュールを入手

 公式の手順通りにサブモジュールを全部取得してしまうと物凄い量になり、ビルド時にかなりのリソースを必要とする。なので今回はQt QuickとQt Multimediaのみ入手する。

cmd
$ perl init-repository --module-subset=qtbase,qtdeclarative,qtmultimedia

4.Visual Studio 2017のx64用コマンドプロンプトを起動

 スタートメニューにある「VS 2017 用 x64 Native Tools コマンド プロンプト」を実行する。

※本体はC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.batです。

5.ビルド用ディレクトリを作成

 公式によるとqt5ディレクトリと同じ階層に、ビルド用のディレクトリを作成した方が良いらしい。例えば、マイドキュメント直下にqt5をダウンロードした場合、ビルド用ディレクトリqt5_buildもマイドキュメント直下に作成する。

VS2017用x64NativeToolsコマンドプロンプト
$ cd c:\Users\<ユーザー名>\Documents
$ mkdir qt5_build
$ cd qt5_build

6.ビルドの設定

 Windowsのコマンドプロンプトだと../を認識しないので、qt5\configureまでのパスを絶対パスで表記する。

VS2017用x64NativeToolsコマンドプロンプト
$ c:\Users\<ユーザー名>\Documents\qt5\configure -developer-build -opensource -nomake examples -nomake tests

7.ビルド

VS2017用x64NativeToolsコマンドプロンプト
$ nmake

8.動作チェック

Visual Studio2017を起動し、空のC++プロジェクトを作成

プロジェクトのプロパティにQtのライブラリパスを追加
・「C/C++ > 全般 > 追加のインクルードディレクトリ」にC:\Users\<ユーザー名>\Documents\qt5_build\qtbase\includeを追加
・「リンカー > 全般 > 追加のライブラリディレクトリ」にC:\Users\<ユーザー名>\Documents\qt5_build\qtbase\libを追加
・「リンカー > 入力 > 追加の依存ファイル」に、C:\Users\<ユーザー名>\Documents\qt5_build\qtbase\libにある必要なライブラリ名を追加
※末尾が*d.libになっているのはDebug用のライブラリです

dllファイルを実行ファイルと同じディレクトリに配置
 自分の場合はC:\Users\<ユーザー名>\Documents\Visual Studio 2017\Projects\Project1\x64\Releaseに配置

サンプルプログラムの作成

main.cpp
#include "QtWidgets/QApplication"
#include "QtWidgets/QPushButton"

int main(int argc, char**argv) {

    QApplication app(argc, argv);

    QPushButton button("Hello world!");
    button.show();

    return app.exec();
}

実行
以下のウィンドウが表示されればOK

■参考リンク

1.Building Qt 5 from Git - Getting_the_source_code
https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_source_code

2.Qt のソースコードを取得してビルドをする方法について
https://qiita.com/task_jp/items/f0753c52c86a26928465