この章では、wxGo を Linux Mint(Ubuntu 互換)へインストールする方法を説明しています。
対象となるバージョンは、Linux Mint 18.x 19.x、Ubuntu 16.04 18.04 です。
macOS へのインストールは、はじめの一歩をご覧ください。
wxGo を使うためには、g++ の開発環境がインストールされている必要があります。
ターミナルに次のコードを入力して、g++ が、インストールされているか確認してください。インストールされていなければインストールしてください。
g++ --version
//g++ がまだインストールされていない場合は
sudo apt install g++
Linux と Windows で wxGo を使う場合は、Go のバージョンが問題になります。Go のバージョンが 1.9.4 以上の場合は、wxGo をインストールしようとすると「無効なフラグ」というエラーが出ます。その回避法はオフィシャルページにいろいろと書かれていますが、私の場合は、どの方法も上手くいきませんでした。
以上の理由により、ここでは、Go 1.9.3 をインストールします。
次のコードで、Go がすでにインストールされているかどうか確認して、違うバージョンの Go がインストールされている場合は、その Go を削除してください。
go version
//1.9.3でなく
//手動でインストールしていた場合は
sudo rm -r /usr/local/go
//apt パッケージマネージャーでインストールしていた場合は
sudo apt remove golang-go
次のサイトから go 1.9.3 をダウンロードします。
Donwnloads - The Go Programming Language - Golang一番下までスクロールして、Archived Versions をクリック
go1.9.3をクリック
go1.9.3linux-amd64.tar.gz をクリック
自動でアーカイブマネージャーが起動すると思いますので、任意の場所に展開してください。私はホームフォルダに展開しました。
ターミナルを起動して、go を展開したフォルダに移動して、次のコードを入力して go を /usr/local に移動してください。
sudo mv go /usr/local
次のコードを /etc/profile の末尾に追加してください。emacs などを使うと便利です。
sudo emacs /etc/profile
// /etc/profileの末尾の次のコードを追加
export PATH=$PATH:/usr/local/go/bin
ここで一度、Mint を再起動するか再ログインしてください。
go 1.9.3 がインストールできているかどうか確認します。
go version
go version go1.9.3 linux/amd64
ターミナルに次のコードを入力してインストールします。
go get -x github.com/dontpanic92/wxGo/wx
インストールが終わるまでしばらく時間がかかります。
次のようなエラーが出て終了します。
/usr/bin/ld: -lgtk-3 が見つかりません
/usr/bin/ld: -lgdk-3 が見つかりません
/usr/bin/ld: -lcairo-gobject が見つかりません
/usr/bin/ld: -lwebkitgtk-3.0 が見つかりません
/usr/bin/ld: -lGL が見つかりません
/usr/bin/ld: -lGLU が見つかりません
/usr/bin/ld: -lgthread-2.0 が見つかりません
/usr/bin/ld: -lX11 が見つかりません
/usr/bin/ld: -lXxf86vm が見つかりません
/usr/bin/ld: -lSM が見つかりません
/usr/bin/ld: -lpangocairo-1.0 が見つかりません
/usr/bin/ld: -lpango-1.0 が見つかりません
/usr/bin/ld: -latk-1.0 が見つかりません
/usr/bin/ld: -lcairo が見つかりません
/usr/bin/ld: -lnotify が見つかりません
/usr/bin/ld: -lgdk_pixbuf-2.0 が見つかりません
/usr/bin/ld: -lgio-2.0 が見つかりません
/usr/bin/ld: -lgobject-2.0 が見つかりません
/usr/bin/ld: -lglib-2.0 が見つかりません
/usr/bin/ld: -lpng が見つかりません
/usr/bin/ld: -ljpeg が見つかりません
/usr/bin/ld: -ltiff が見つかりません
/usr/bin/ld: -lexpat が見つかりません
/usr/bin/ld: -lz が見つかりません
/usr/bin/ld: -lgstreamer-1.0 が見つかりません
/usr/bin/ld: -lgstvideo-1.0 が見つかりません
上記のライブラリが見つからないという意味です。これらのライブラリをインストールします。
sudo apt install -y libgtk-3-dev
sudo apt install -y libwebkitgtk-3.0-dev
sudo apt install -y libgl-dev
sudo apt install -y libglu-dev
sudo apt install -y libnotify-dev
sudo apt install -y libjpeg-dev
sudo apt install -y libtiff-dev
sudo apt install -y libgstreamer1.0-dev
sudo apt install -y libgstreamer-plugins-base1.0-dev
ライブラリのインストールが終わりましたら、wxGoをもう一度インストールしてください。
go get -x github.com/dontpanic92/wxGo/wx
次のコードをお好きなエディタで記述して保存してください。
package main
import "github.com/dontpanic92/wxGo/wx"
func main() {
app := wx.NewApp()
frame := wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo")
frame .Show()
app .MainLoop()
}
ターミナルで、main.go を保存したディレクトリに移動して、次のコードで実行してください。
go run main.go
実行結果が表示されるのに、少し時間がかかります。
ウィンドウを閉じるとアプリケーションは終了します。
ウィンドウのデフォルトサイズは、プラットフォームによって違うみたいです。多くの場合、横 400 ピクセル、縦 500 ピクセルぐらいになる場合が多いみたいです。コードを次のように変更すると、ウィンドウのサイズを変更できます
frame := wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo")
↓
frame := wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo", wx.DefaultPosition, wx.NewSize(400, 250))
package main
Go のソースコードはパッケージ単位で管理します。特に意図がない限りは、最初のパッケージは main にします。
import "github.com/dontpanic92/wxGo/wx"
wxGo のパッケージを読み込んでいます。これによって、wxWidgets の関数などが使えるようになります。
func main() {
多くのプログラミング言語と同様に、Go のプログラムも main 関数から始まる決まりになっています。
app := wx.NewApp()
アプリケーションを作って起動します。
frame := wx.NewFrame(wx.NullWindow, wx.ID_ANY, "Hello wxGo")
フレームを作っています。フレームとは、ウィンドウのことです。第1引数にフレームが所属するウィンドウ、第2引数にフレームの ID、第3引数にフレームに表示される文字列を指定します。
フレームじたいが、ウィンドウなので、どのウィンドウにも所属していないことをあらわす wx.NullWindow を第1引数に指定しています。第2引数に、wx.ID_ANY を指定すると一意の整数が与えられます。wx.ID_ANY の替わりに -1 と記述しても一意の整数が得られます。
frame .Show()
フレームは、作っただけでは表示されません。Show メソッドで表示されるようにします。
app .MainLoop()
アプリケーションの MainLoop メソッドを呼び出すことで、アプリケーションが継続的に起動し続けるようになります。もし MainLoop メソッドを呼び出さない場合は、アプリケーションは一瞬で終わります。