2016/08/25

Debian/UbuntuでwxWidgetsのサンプルをビルド・実行する

クロスプラットフォームなGUIツールキットライブラリwxWidgetsには多数のサンプルコードが付属しているのだが、Debian/Ubuntuのパッケージでは実行ファイルではなくソースのみがパッケージとしてインストール可能となっている。

ここでは、そのソースの取得からビルド作業,サンプルプログラムの実行についてを扱う。

  1. パッケージのインストール
  2. ソースの展開
  3. ビルド
  4. 実行

パッケージのインストール

コードをビルドする関係で、サンプルソースのパッケージの他にwxWidgetsの開発パッケージのインストールも必要となる。このパッケージ名は “libwxgtk[バージョン]-dev” で、Ubuntu 16.04時点では “libwxgtk3.0-dev” となっている。これはGTK+ 2を使用するように設定されたwxWidgets 3.0の開発パッケージ。

サンプルソースのパッケージ名は “wx[バージョン]-examples” で、同ディストリでは “wx3.0-examples” となっている。

ソースの展開

サンプルソースはディレクトリごとに分かれており、バージョン番号の部分を “X.Y” とすると/usr/share/doc/wxX.Y-examples/examples/以下に配置されているが、各ソースファイルはディスク使用量節約のためにgzip圧縮されており、そのままではビルドができない。

同ディレクトリにあるunpack_examples.shというスクリプトを用いるとこれを指定した場所にコピーしつつ、圧縮された各ソースを伸長する。

(wx-examplesディレクトリを作成してこの中に展開する例)
$ /usr/share/doc/wxX.Y-examples/examples/unpack_examples.sh wx-examples
Copying /usr/share/doc/wxX.Y-examples/examples/samples to wx-examples
Unpacking... done.

ビルド

samplesディレクトリにはMakefileがあり、この階層に移動した後にmakeを実行することでほとんどのサブディレクトリのサンプルコードがビルドされる。

ビルドにはそれなりの時間がかかる。

(サンプルコードのディレクトリに移動)
$ cd wxX.Y-examples/samples/

(ビルドを行う)
[wxX.Y-examples/samples]$ make

OpenGLを用いるサンプルコードのビルド時に “error adding symbols: DSO missing from command line” のエラーになってリンクに失敗する場合はリンク時に-lGL -lGLUの2つのオプションが付くように指定する。ただし、サンプルの1つがGLUライブラリを使用している関係で “libglu1-mesa-dev” パッケージも別途必要となる。

(OpenGL関係のサンプルコードをビルド)
[wxX.Y-examples/samples]$ make -C opengl LDFLAGS="-lGL -lGLU"

実行

サンプルコードには

  • どの作業ディレクトリから実行しても正しく動作するもの
  • 作業ディレクトリをソース(.cppファイル)のあるディレクトリに移動後 “./[実行ファイル名]” 形式で実行しないとデータファイルの配置場所の関係で正しく動作しない(エラーメッセージが表示される)もの

の2種類があり、そのまま他の作業ディレクトリから実行して問題があった場合には作業ディレクトリをcdコマンドで移動後に実行し直すとよい。

下はimageディレクトリの中にある実行ファイルimageを実行する例。

(imageディレクトリに移動)
[wxX.Y-examples/samples]$ cd image/

(このディレクトリ内の実行ファイルimageを実行)
[wxX.Y-examples/samples/image]$ ./image

(前の作業ディレクトリに戻る)
[wxX.Y-examples/samples/image]$ cd -
使用したバージョン:
  • wxWidgets 3.0.2