2015年3月28日土曜日

GoのGXUIライブラリをOS XとWindowsで動かしてみた

久しぶりの更新ですが、Go言語のUIライブラリをOS X YosemiteとWindows 8.1で試したので、まとめます。

Googleが公開している"GXUI"です。クロスプラットフォームを実現するためにOpenGLを利用しています。まだまだ開発途中のようですが、UIのクロスプラットフォームを実現する言語は少ないので、期待しています。

GXUI - A Go cross platform UI library.
https://github.com/google/gxui

OS X Yosemite


Macでは簡単です。

Goのインストール

go getコマンド時に、GitとMercurialも必要です。
GOPATHはサンプルでは$HOMEを指定していますが、お好みの場所を指定してください。
$ brew install go

$ go version
go version go1.4.2 darwin/amd64

$ vim ~/.zshrc
export GOROOT=/usr/local/opt/go/libexec
export GOPATH=${HOME}
export PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin

$ . ~/.zshrc

GXUIのセットアップ

$ cd $GOPATH

$ go get code.google.com/p/freetype-go/freetype
$ go get github.com/go-gl/gl/v3.2-core/gl
$ go get github.com/go-gl/glfw/v3.1/glfw

$ go get github.com/google/gxui

サンプルプロジェクトの実行(2015/3/26に更新されていました)

$ go install github.com/google/gxui/samples/...

Windows 8.2

13インチMacBook Pro RetinaにBootcampでインストールしたものです。

Go言語はCygwinでの動作を保証されていないため、MinGW(64bit版)とMSYSをインストールしています。その際、以下のページを参考にさせて頂きました。

参考

WindowsにMinGWをインストールしてC/C++で開発(64bit版)
MinGW (64bit) + MSYS 環境の構築 (1)
Windows に MinGW-w64 と MSYS を導入する

7-Zipのインストール

7-Zip/
7z920-x64.zipをダウンロード&展開し、インストール

MinGW-w64のインストール

MinGW-w64 - for 32 and 64 bit Windows
「Toolchains targetting Win64 / Personal Builds / mingw-builds / 4.9.2 / threads-posix / seh / x86_64-4.9.2-release-posix-seh-rt_v4-rev2.7z」をダウンロード。

展開して出来た「mingw64」を「C:\」に移動 (C:\mingw64)

環境変数に追加

コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 環境変数
システム環境変数 > Path を編集し、「C:\mingw64\bin」を追加

MSYSのインストール

MinGW-builds - Browse Files at SourceForge.net
「external-binary-packages / msys+7za+wget+svn+git+mercurial+cvs-rev13.7z」をダウンロード

展開して出来た「msys」を「C:\mingw64」に移動 (C:\mingw64\msys)

環境変数に追加

コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 環境変数
システム環境変数 > Path を編集し、「C:\mingw64\msys\bin」を追加

git for windowsのインストール

Git for Windows

ダウンロードした「Git-1.9.5-preview20150319.exe」を実行し、インストール

環境変数に追加

コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 環境変数
システム環境変数 > Path を編集し、「C:\Program Files (x86)\Git\bin」を追加


hgコマンドが必要なので、mercurialをダウンロード

Mercurial SCM

ダウンロードした「tortoisehg-3.3.2-x64.msi」 を実行し、インストール

環境変数は自動的に追加される

Goをインストール

The Go Programming Language

Bootcampなので、64bit Windows版をダウンロード
「go1.4.2.windows-amd64.zip」をダウンロードし、展開。

展開して出来た「go」を「C:\Go」として移動

環境変数に追加

コントロールパネル > システムとセキュリティ > システム > システムの詳細設定 > 環境変数
システム環境変数 > Path を編集し、「C:\Go\bin」を追加

また、新規の環境変数を作成し、GOROOTに「C:\Go」を指定します。

$ go version
go version go1.4.2 windows/amd64

環境変数を変更しても、OSの再起動は不要です。ただし、既にMSYSを起動している場合には、MSYSを終了します。


MSYSの起動と設定

「C:\mingw64\msys\msys.bat」を起動

MSYSのGitとMercurialのバージョンが古いのでリネーム

Git

$ mv /bin/git{,.OLD}
$ git --version
git version 1.9.5.msysgit.1
$ which git
/c/Program Files (x86)/Git/bin/git.exe

Mercurial

$ mv /bin/hg{,.OLD}
$ hg --version
Mercurial - 分散構成管理ツール(バージョン 3.3.2)
$ which hg
/c/Program Files (x86)/TortoiseHg/hg.exe

Goの環境設定

GOPATHはサンプルでは$HOMEを指定していますが、お好みの場所を指定してください。
$ cd ~/
$ vim .profile
. ~/.bashrc

$ vim .bashrc
export GOPATH=$HOME

$ . .profile

GXUIのセットアップ

後は、Macと同じ手順です。
$ cd $GOPATH

$ go get code.google.com/p/freetype-go/freetype
$ go get github.com/go-gl/gl/v3.2-core/gl
$ go get github.com/go-gl/glfw/v3.1/glfw

$ go get github.com/google/gxui

Cygwinの場合のエラー

$ go get github.com/go-gl/gl/v3.2-core/gl
/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/../../../../x86_64-pc-cygwin/bin/ld: -lmingwex が見つかりません
/usr/lib/gcc/x86_64-pc-cygwin/4.9.2/../../../../x86_64-pc-cygwin/bin/ld: -lmingw32 が見つかりません
collect2: エラー: ld はステータス 1 で終了しました
同じエラーに遭遇している方もいるようです。
Issue 7265 - go - Windows/cgo: cannot find -lmingwex & cannot find -lmingw32 - The Go Programming Language - Google Project Hosting

サンプルプロジェクトの実行(2015/3/26に更新されていました)

$ go install github.com/google/gxui/samples/...

実行結果の比較


OS XWindows
file_dlg
image_viewer
linear_layout
lists
panels
polyedit
polygon
progress_bar
tree