2020-12-22

GTK4 を触ってみた (2) ~ Meson でビルド ~

12月16日に GTK 4.0 が公開をされました。GTK は C 言語で記述されたクロスプラットフォーム対応の GUI ツールキットです。最近は GTK を使って直接コンパイルすることをしなくなってしまいましたが、いまどきの GTK を知りたくなり、簡単なプログラムをコンパイルしてみました。今回は、前回 [1] と同じサンプルを Meson でビルドしてみました。

本ブログ記事では下記の OS 環境で動作確認をしています。

Fedora 33 (Workstation Edition) x86_64

Meson でビルド

前回 [1] 使用したソースファイルは下記の通りです。

hello-world-gtk.c

Meson の準備

Meson /ˈmɛ.sɒn/ はソースプログラムをビルドする作業を自動化するためのソフトウェアです。Linux では、Ninja というビルドシステムをバックエンドに使います。

インストールしてある Fedora のパッケージのバージョンは次の通りです。

[bitwalk@fedora-pc ~]$ rpm -q meson
meson-0.55.3-1.fc33.noarch
[bitwalk@fedora-pc ~]$ meson --version
0.55.3
[bitwalk@fedora-pc ~]$ rpm -q ninja
パッケージ ninja はインストールされていません。
[bitwalk@fedora-pc ~]$ rpm -qa | grep ninja
ninja-build-1.10.1-2.fc33.x86_64
[bitwalk@fedora-pc ~]$ ninja --version
1.10.1
[bitwalk@fedora-pc ~]$ 

ちなみに meson、ninja 共に Python のプログラムですので、下記のように pip でインストールして利用することもできます。

(venv) [bitwalk@fedora-pc ~]$ pip install meson
Collecting meson
  Downloading meson-0.56.0.tar.gz (1.8 MB)
     |████████████████████████████████| 1.8 MB 3.2 MB/s 
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: meson
  Building wheel for meson (PEP 517) ... done
  Created wheel for meson: filename=meson-0.56.0-py3-none-any.whl size=696825 sha256=0ff3dd1d888e565556739978c0983e462dfb7e1caeeabdca307c9bc26ff82ee8
  Stored in directory: /home/bitwalk/.cache/pip/wheels/30/10/88/4778af4269ebb518426853d2b2c78f897a499d8cede60b59e4
Successfully built meson
Installing collected packages: meson
Successfully installed meson-0.56.0
(venv) [bitwalk@fedora-pc ~]$ pip install ninja
Collecting ninja
  Downloading ninja-1.10.0.post2-py3-none-manylinux1_x86_64.whl (107 kB)
     |████████████████████████████████| 107 kB 2.6 MB/s 
Installing collected packages: ninja
Successfully installed ninja-1.10.0.post2
(venv) [bitwalk@fedora-pc ~]$ meson --version
0.56.0
(venv) [bitwalk@fedora-pc ~]$ ninja --version
1.10.0.git.kitware.jobserver-1
(venv) [bitwalk@fedora-pc ~]$ 

Fedora の RPM パッケージは、pip で利用できるバージョンとそれほど差が無いので、ここでは Fedora の方を使って説明します。

Meson のビルド内容を記述したファイル meson.build を C ソースの hello-world-gtk.c 同じディレクトリに作成します。内容は以下の通りです。

meson.build

ここでは、ビルドした実行ファイルを hello としています。

Meson でプログラムをビルドするには、ビルド用のディレクトリを準備する必要があります。ここでは builddir 内にビルドするとして次のようにセットアップします。

[bitwalk@fedora-pc hello-world-gtk]$ meson setup builddir
The Meson build system
Version: 0.55.3
Source dir: /home/bitwalk/Projects/hello-world-gtk
Build dir: /home/bitwalk/Projects/hello-world-gtk/builddir
Build type: ative build
Project name: Hello World
Project version: undefined
C compiler for the host machine: ccache cc (gcc 10.2.1 "cc (GCC) 10.2.1 20201125 (Red Hat 10.2.1-9)")
C linker for the host machine: cc ld.bfd 2.35-15
Host machine cpu family: x86_64
Host machine cpu: x86_64
Found pkg-config: /bin/pkg-config (1.7.3)
Run-time dependency gtk4 found: YES 3.99.4
Build targets in project: 1

Found ninja-1.10.1 at /bin/ninja
[bitwalk@fedora-pc hello-world-gtk]$ 

Meson でビルドするには、builddir 内にカレントディレクトリを移動するか、-C オプションで builddir を指定して compile コマンドを実行してコンパイルします。

[bitwalk@fedora-pc hello-world-gtk]$ meson compile -C builddir
Found runner: ['/bin/ninja']
ninja: Entering directory `builddir'
[2/2] Linking target hello
[bitwalk@fedora-pc hello-world-gtk]$ 

コンパイルした hello ファイルは、builddir 内にあるので、下記のように実行します。

[bitwalk@fedora-pc hello-world-gtk]$ ls builddir
build.ninja  compile_commands.json  hello  hello.p  meson-info  meson-logs  meson-private
[bitwalk@fedora-pc hello-world-gtk]$ ./builddir/hello
Hello World
hello-world-gtk の実行例

直接 GTK4 に関係するトピックから逸れていきますが、もうすこし Hello World プログラムを取り上げます。

参考サイト

  1. bitWalk's: GTK4 を触ってみた [2020-12-21]
  2. GTK 4.0 – GTK Development Blog [2020-12-16]
  3. 「GTK 4」が公開、メディア再生サポートなどが加わる | OSDN Magazine [2020-12-17]
  4. Versioning and long term stability promise in GTK+ – GTK Development Blog [2016-09-01]
  5. Tutorial (The Meson Build System)

 

ブログランキング・にほんブログ村へにほんブログ村

0 件のコメント: