Go言語でQtを扱ってみる on UbuntuでUbuntuでGo言語とQtの開発環境を用意した。

続いて、Windows10でもGo言語とQtの開発環境を用意してみる。


環境

ASUS TransBook T304U

OS : Windows10 64bit

Go言語:1.11 linux/amd64

Qt:5.11.1

端末はgit bashを利用しているので、新規でMSYS2をインストールせず、git bashを使用する方向で話を進めます。

git bashは下記の記事に記載されている手順で拡張済みです。

Go言語のSQLiteドライバでデータを挿入してみる


最初にGo言語を最新版にするが、それは省略


続いて、Qtのインストールを行う。

Qt公式のインストーラも試したが、MSYS2のパッケージマネージャ(pacman)を利用した方が格段に楽だったので、

今回はMSYS2の方で話を進める。

インストールの手順は下記のページを参考にした。

Installation on Windows · therecipe/qt Wiki · GitHub


最初に使用しているMSYS2のディレクトリを環境変数として登録しておく。


環境変数を登録する手順は

cortana_search_env

画面左下にあるcortana検索で「環境変数」で検索すると結果にあがるシステム環境変数の編集を選択し、


env_edit_w

システムのプロパティの画面で環境変数のボタンを押す。


git_bash_env_reg


環境変数の画面が表示されたら、新規ボタンを押して、QT_MSYS2_DIRを登録する。

拡張したgit bash(MSYS2)のパスはC:\git-sdk-63になる。


環境変数の登録が終了したら、

拡張したgit bash(起動のアイコンはMSYS2)を立ち上げ、

下記のコマンドを実行

$ QT_MSYS2=true
$ QT_MSYS2_ARCH=amd64
$ pacman -Syyu
$ pacman -S mingw-w64-x86_64-qt-creator mingw-w64-x86_64-qt5
$ pacman -Scc

インストールは30分程かかる。

インストールが終了したらGo言語の方のパッケージの取得とセットアップを行う。

$ go get -v github.com/therecipe/qt/cmd/...
$ qtsetup
# Goのパスを通していなければ下記を実行
# $ %GOPATH%\bin\qtsetup.exe

これでGo言語側のQtの設定は終了。

Qtが使用できるかの確認のためにサンプルコードを実行してみる。


サンプルコードを実行する為に下記のコマンドを実行する。


$ go get -d -v github.com/therecipe/examples/...
$ cd $GOPATH/src/github.com/therecipe/examples
$ qtdeploy test desktop ./basic/qml

go_qt_widget


デプロイ時にウィンドウが立ち上がりつつ、下記のエラーが発生する。

time="2018-09-11T07:08:29+09:00" level=error msg="failed to run command" cmd="cp C:\\git-sdk-64\\mingw64\\bin\\libicudt61.dll C:\\Users\\ryoko\\go\\src\\github.com\\therecipe\\examples\\basic\\qml\\deploy\\windows" dir= env= error="exit status 1" func=RunCmdOptional name="copy libicudt61 for windows on windows"
cp: 'C:\git-sdk-64\mingw64\bin\libicudt61.dll' を stat できません: No such file or directory

今回のエラーは一つだけ記載するが、他にも似たようなのがあった。

git bashのライブラリにlibicudt61.dllがないことによるエラーだった。


下記のURLから古いバージョンをダウンロードし、

https://sourceforge.net/projects/msys2/files/REPOS/MINGW/i686/mingw-w64-i686-icu-61.1-1-any.pkg.tar.xz/download


7-zipなどで解凍した後、ディレクトリ構造に従いlibicudt61.dllを探して、

エラーメッセージに従って、足りないファイルをgit bashの方のlibディレクトリにコピーして再び実行すれば良い。