wxWidgets のインストール(Ubuntu 上)

wxWidgets は,GUI アプリケーションを記述するための C++ ライブラリ.Windows, UNIX 系 OS, macOS で動く. wxWidgets には,GUI 機能,ヘルプ表示,ネットワークプログラミング,クリップボード,ドラッグアンドドロップ,マルチスレッド,画像のロードとセーブ,データベースアクセス,HTML 表示と印刷等の機能がある.

URL: https://www.wxwidgets.org/

ソフトウェア等の利用条件は,利用者自身で確認下さい.

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行
# sudo shutdown -r now

C/C++ コンパイラー,make,パッケージツール,GTK 開発用ファイルのインストール

端末で,次のコマンドを実行する.

Ubuntu 上の wxWidgets は GTK を用いて画面を描画するため,GTK の開発用ファイルが必要である.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
sudo apt -y install libgtk-3-dev
sudo apt -y install curl

wxWidgets のインストール(ソースコードを使用)(Ubuntu 上)

◆ Ubuntu での操作手順例

  1. wxWidgets の Web ページを開き,wxWidgets の利用条件と,最新の安定版(stable release)のバージョン番号を確認する.

    https://www.wxwidgets.org/downloads/

    以下では,安定版の 3.2.11 を用いる場合を示す.別のバージョンを使うときは,コマンド中のバージョン番号を読み替える.

  2. ダウンロードと展開

    GitHub のリリースページの URL はリダイレクトされるため,curl には -L を付ける.

    cd /tmp
    rm -rf wxWidgets-3.2.11
    curl -L -O https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.11/wxWidgets-3.2.11.tar.bz2
    tar -xjf wxWidgets-3.2.11.tar.bz2
    
  3. ビルドとインストール

    インストール先は /usr/local である.

    cd /tmp/wxWidgets-3.2.11
    ./configure --with-gtk=3 --prefix=/usr/local
    make -j$(nproc)
    sudo make install
    
  4. 共有ライブラリの検索パスの設定

    wxWidgets の共有ライブラリは /usr/local/lib にインストールされる.実行時にライブラリが見つかるように,検索パスに追加して,キャッシュを更新する.

    echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usr-local-lib.conf
    sudo ldconfig
    
  5. 動作テスト

    付属のサンプル minimal をビルドし,実行する.ウインドウが表示されれば,インストールは成功している.

    cd /tmp/wxWidgets-3.2.11/samples/minimal
    make
    ./minimal
    

サンプルプログラム

wxWidgets の wxApp, wxFrame, wxMenu, wxMenuBar を使用したプログラムである. アプリケーションの本体は wxApp の派生クラスであり,wxIMPLEMENT_APP マクロによってエントリーポイントが生成される. ウインドウの表示開始は OnInit で行う.

#include <wx/wx.h>

// メインウインドウ
class MyFrame : public wxFrame
{
public:
    MyFrame()
        : wxFrame(nullptr, wxID_ANY, "Window Title",
                  wxPoint(480, 480), wxSize(320, 200))
    {
        wxMenu *menuFile = new wxMenu;
        menuFile->Append(wxID_EXIT);

        wxMenuBar *menuBar = new wxMenuBar;
        menuBar->Append(menuFile, "&File");
        SetMenuBar(menuBar);

        Bind(wxEVT_MENU, [this](wxCommandEvent&) { Close(true); }, wxID_EXIT);
    }
};

// アプリケーション
class MyApp : public wxApp
{
public:
    // この関数がアプリケーションのスタートポイント
    bool OnInit() override
    {
        MyFrame *frame = new MyFrame();
        frame->Show(true);
        return true;
    }
};

wxIMPLEMENT_APP(MyApp);

上のプログラムを minimal.cpp として保存したとき,コンパイルと実行は次のように行う. コンパイルオプションとリンクオプションは wx-config が出力する.

g++ minimal.cpp `wx-config --cxxflags --libs` -o minimal
./minimal