12月16日に GTK 4.0 が公開をされました。GTK は C 言語で記述されたクロスプラットフォーム対応の GUI ツールキットです。最近は GTK を使って直接コンパイルすることをしなくなってしまいましたが、いまどきの GTK を知りたくなり、簡単なプログラムをコンパイルしてみました。今回は、前回 [1] と同じサンプルを Meson でビルドしてみました。
本ブログ記事では下記の OS 環境で動作確認をしています。
Fedora 33 (Workstation Edition) | x86_64 |
Meson でビルド
前回 [1] 使用したソースファイルは下記の通りです。
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 同じディレクトリに作成します。内容は以下の通りです。
ここでは、ビルドした実行ファイルを 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
直接 GTK4 に関係するトピックから逸れていきますが、もうすこし Hello World プログラムを取り上げます。
参考サイト
- bitWalk's: GTK4 を触ってみた [2020-12-21]
- GTK 4.0 – GTK Development Blog [2020-12-16]
- 「GTK 4」が公開、メディア再生サポートなどが加わる | OSDN Magazine [2020-12-17]
- Versioning and long term stability promise in GTK+ – GTK Development Blog [2016-09-01]
- Tutorial (The Meson Build System)
にほんブログ村
0 件のコメント:
コメントを投稿