C言語GUI入門|GTK 4をインストールする

GTK 4は、C言語からウィンドウ、ボタン、入力欄、メニューなどを利用するためのGUIライブラリです。

この節では、MSYS2 UCRT64環境へGTK 4をインストールし、次の方法で正しく導入できたことを確認します。

  1. pacmanでGTK 4パッケージをインストールする
  2. pkg-configが実行できることを確認する
  3. pkg-configからGTK 4が認識されていることを確認する
  4. GTK 4のバージョンを確認する
  5. gtk4-demoを起動する
  6. GTK 4のサンプル画面を操作する

使用する主なコマンドは次のとおりです。

目的コマンド
GTK 4をインストールするpacman -S --needed mingw-w64-ucrt-x86_64-gtk4
pkg-configのバージョンを確認するpkg-config --version
GTK 4のバージョンを確認するpkg-config --modversion gtk4
pkg-configの場所を確認するwhich pkg-config
gtk4-demoの場所を確認するwhich gtk4-demo
GTK 4のサンプルを起動するgtk4-demo

第2章では、まだGTK 4を使ったC言語プログラムは作成しません。ここでは、GTK 4のライブラリと開発用ファイルを導入し、付属するデモアプリケーションが起動するところまで確認しましょう。

GTK 4パッケージに含まれるもの

GTK 4パッケージには、GUIアプリケーションの実行に必要なライブラリだけでなく、C言語からGTK 4を利用するための開発用ファイルも含まれています。

主な内容は次のとおりです。

  • GTK 4のDLL
  • C言語用のヘッダーファイル
  • リンクに使用するライブラリ
  • pkg-configが読み取る設定ファイル
  • gtk4-demoなどの確認用ツール
  • GTK 4に必要な関連ライブラリ
  • アイコンや各種データファイル

MSYS2のUCRT64向けGTK 4パッケージ名は、次のとおりです。

mingw-w64-ucrt-x86_64-gtk4

このパッケージは、MSYS2のucrt64リポジトリで提供されています。

GTK 4パッケージ名の読み方

長いパッケージ名ですが、部分ごとに見ると意味が分かります。

部分意味
mingw-w64Windows向けの開発環境
ucrtUniversal C Runtimeを使用する
x86_6464ビットのIntelまたはAMD系CPU向け
gtk4GTKのバージョン4

本コンテンツではUCRT64環境を使用するため、パッケージ名にucrtが含まれているものを選びます。

次のような似た名前のパッケージと間違えないようにしましょう。

パッケージ名対象
mingw-w64-ucrt-x86_64-gtk4本コンテンツで使用するUCRT64向けGTK 4
mingw-w64-x86_64-gtk4MINGW64向けGTK 4
mingw-w64-ucrt-x86_64-gtk3UCRT64向けGTK 3

本コンテンツで使用するのは、GTK 3ではなくGTK 4です。

GTK 4と一緒に導入される関連ライブラリ

GTK 4は、単独ですべての処理を行っているわけではありません。文字表示、画像処理、基本データ型、オブジェクト管理などを、複数の関連ライブラリと分担しています。

関連ライブラリ主な役割
GLib基本データ型、文字列、ファイル、イベント処理など
GObjectオブジェクトとシグナルの仕組み
GIOファイルやアプリケーションなどの入出力機能
Pango文字の配置や描画
Cairo2次元グラフィックスの描画
GdkPixbuf画像データの読み込みや管理
Graphene座標や行列などの計算
GDK画面表示や入力イベントとGTKの橋渡し

これらを個別に探してインストールする必要はありません。

pacmanがGTK 4の依存関係を調べ、必要なパッケージを一緒にインストールします。MSYS2の公式パッケージ情報でも、GTK 4がGLib、Pango、Cairo、GdkPixbufなどに依存していることを確認できます。

図1:GTK 4と関連ライブラリの構成

この図から分かること

GTK 4は、ウィンドウやボタンなどのGUI部品を提供します。その内部では、GLib、GObject、Pango、Cairoなどの関連ライブラリが役割を分担しています。

pacmanを使ってGTK 4をインストールすると、必要な依存パッケージも一緒に導入されます。初学者が関連ライブラリをひとつずつ調べてインストールする必要はありません。

インストール前の状態を確認する

GTK 4をインストールする前に、次の準備が完了していることを確認します。

  • MSYS2がインストールされている
  • MSYS2全体の更新が完了している
  • GCCツールチェーンがインストールされている
  • base-develがインストールされている
  • MSYS2 UCRT64ターミナルを起動できる
  • インターネットへ接続できる

MSYS2 UCRT64ターミナルを開き、プロンプトにUCRT64と表示されていることを確認します。

ユーザー名@コンピューター名 UCRT64 ~
$

MSYSやMINGW64と表示されている場合は、現在のターミナルを閉じ、WindowsのスタートメニューからMSYS2 UCRT64を起動し直してください。

MSYS2を最新の状態にする

GTK 4をインストールする前に、MSYS2全体を更新します。

pacman -Syu

更新対象が表示された場合は、画面の案内に従って更新します。

MSYS2本体の更新によってターミナルが閉じた場合は、MSYS2 UCRT64を起動し直し、同じコマンドをもう一度実行します。

pacman -Syu

次のように表示されれば、更新するパッケージはありません。

:: Starting core system upgrade...
 there is nothing to do
:: Starting full system upgrade...
 there is nothing to do

GTK 4だけを新しくして、ほかのライブラリを古いままにする部分更新は避けましょう。MSYS2全体を更新してからGTK 4を導入すると、依存関係の不一致を防ぎやすくなります。

GTK 4をインストールする

MSYS2 UCRT64ターミナルで、次のコマンドを実行します。

pacman -S --needed mingw-w64-ucrt-x86_64-gtk4

GTKの公式Windows向け導入手順でも、MSYS2から同じUCRT64向けパッケージをインストールする方法が案内されています。

コマンドの意味

部分役割
pacmanMSYS2のパッケージ管理ツール
-Sパッケージをサーバーと同期してインストールする
--needed最新版が導入済みなら再インストールしない
mingw-w64-ucrt-x86_64-gtk4UCRT64向けGTK 4パッケージ

コマンドが長いため、途中で改行しないように入力します。

インストール内容を確認する

コマンドを実行すると、GTK 4本体と依存パッケージの一覧が表示されます。

続いて、ダウンロードサイズとインストール後に使用する容量が表示されます。

表示内容は、すでにインストールされているパッケージやGTK 4のバージョンによって異なります。

最後に、次のような確認が表示されます。

:: Proceed with installation? [Y/n]

Yを入力してEnterキーを押します。

Y

Yが大文字になっているため、Enterキーだけでも処理を続けられます。

インストールが完了するまで待つ

インストール中は、次のような処理が行われます。

:: Retrieving packages...
:: Checking keys in keyring...
:: Checking package integrity...
:: Loading package files...
:: Checking for file conflicts...
:: Processing package changes...
:: Running post-transaction hooks...

下図は実際の画面

再び入力待ちのプロンプトが表示されるまで、ターミナルを閉じないでください。

ユーザー名@コンピューター名 UCRT64 ~
$

GTK 4がインストールされた場所

標準のC:\msys64へMSYS2をインストールした場合、GTK 4に関係するファイルは主にC:\msys64\ucrt64の下へ配置されます。

ファイルの種類MSYS2形式の場所Windows形式の場所
実行ファイルとDLL/ucrt64/binC:\msys64\ucrt64\bin
ヘッダーファイル/ucrt64/includeC:\msys64\ucrt64\include
ライブラリ/ucrt64/libC:\msys64\ucrt64\lib
pkg-config用ファイル/ucrt64/lib/pkgconfigC:\msys64\ucrt64\lib\pkgconfig
データファイル/ucrt64/shareC:\msys64\ucrt64\share

たとえば、GTK 4の主要なファイルには次のようなものがあります。

C:\msys64\ucrt64\bin\libgtk-4-1.dll
C:\msys64\ucrt64\bin\gtk4-demo.exe
C:\msys64\ucrt64\include\gtk-4.0

MSYS2の公式パッケージ情報でも、gtk4-demo.exe、libgtk-4-1.dll、GTK 4のヘッダーファイルなどがUCRT64向けパッケージへ収録されていることを確認できます。

通常は、これらのファイルを手動で移動したり、編集したりする必要はありません。pacmanに管理を任せましょう。

pkg-configとは

pkg-configは、GCCが外部ライブラリを利用するときに必要な情報を取得するためのツールです。

GTK 4のような大きなライブラリでは、複数のヘッダーファイルやライブラリが関係します。必要なパスをすべて手作業でGCCへ指定するのは大変です。

pkg-configは、次の情報をまとめて調べます。

  • GTK 4のヘッダーファイルがある場所
  • GTK 4のライブラリがある場所
  • コンパイルに必要なオプション
  • リンクに必要なオプション
  • GTK 4のバージョン
  • GTK 4が依存しているライブラリ

MSYS2では、pkgconfがpkg-config互換の機能を提供しています。そのため、コマンド名としてpkg-configを使用できます。

pkg-configの働き

C言語のソースファイルをGTK 4に対応させるときは、次の関係になります。

担当役割
GCCC言語のソースファイルをコンパイルする
GTK 4GUI機能を提供する
pkg-configGCCへ渡すGTK 4の情報を調べる

pkg-configそのものがソースファイルをコンパイルするわけではありません。GCCがGTK 4を見つけるための案内役です。

図2:pkg-configがGCCとGTK 4をつなぐ仕組み

この図から分かること

pkg-configは、GTK 4のヘッダーファイルやライブラリがどこにあるかを調べ、GCCへ渡す情報を用意します。

GCC、GTK 4、pkg-configは、それぞれ別の役割を持っています。GTK 4プログラムをコンパイルするときは、この3つが連携します。

pkg-configが実行できることを確認する

まず、pkg-config自体が実行できるか確認します。

pkg-config --version

実行結果の例

3.0.5

表示される番号は、インストールした時期によって異なります。

バージョン番号が表示されれば、pkg-configコマンドは実行できています。

pkg-configの場所を確認する

次のコマンドを実行します。

which pkg-config

実行結果の例

/ucrt64/bin/pkg-config

この結果が表示されれば、UCRT64向けのpkg-configが使用されています。

Windows形式では、次の場所に対応します。

C:\msys64\ucrt64\bin\pkg-config.exe

MSYS2のインストール先を変更した場合は、Windows形式の場所も変わります。

GTK 4のバージョンを確認する

pkg-configを使って、インストールされたGTK 4のバージョンを確認します。

pkg-config --modversion gtk4

コマンドの意味

部分役割
pkg-configライブラリ情報を調べる
--modversion指定したライブラリのバージョンを表示する
gtk4調べるライブラリの名前

ここで指定するgtk4は、pacmanのパッケージ名ではありません。

種類名前
pacmanで指定するパッケージ名mingw-w64-ucrt-x86_64-gtk4
pkg-configで指定するライブラリ名gtk4

2つの名前を混同しないようにしましょう。

実行結果の例

4.22.4

バージョン番号は、GTK 4の更新によって変わります。先頭が4になっていればGTK 4です。

このコマンドが成功したことで、次の3点を確認できます。

  • GTK 4がインストールされている
  • pkg-configがGTK 4の情報を見つけられる
  • GTK 4のバージョン情報を読み取れる

GTK 4のインストール情報を確認する

必要に応じて、pacmanからインストール済みパッケージの情報を確認できます。

pacman -Qi mingw-w64-ucrt-x86_64-gtk4

表示内容の例

Name            : mingw-w64-ucrt-x86_64-gtk4
Version         : 4.22.4-1
Description     : GObject-based multi-platform GUI toolkit (v4)
Architecture    : any

実際のバージョンや表示項目は、インストールした時期によって異なります。

pkg-config --modversion gtk4ではGTK本体のバージョンが表示され、pacman -QiではMSYS2パッケージとしてのバージョンや説明が表示されます。

確認方法分かること
pkg-config --modversion gtk4C言語のビルドで認識されるGTK 4のバージョン
pacman -Qi mingw-w64-ucrt-x86_64-gtk4MSYS2にインストールされたパッケージの詳細
which pkg-config使用中のpkg-configの場所
which gtk4-demogtk4-demoの場所

gtk4-demoとは

gtk4-demoは、GTK 4に用意されているさまざまな機能を確認できるデモアプリケーションです。

GTKの公式ドキュメントでは、多くのGTKウィジェットを開発者向けに紹介するサンプル集として説明されています。各サンプルでは、画面だけでなくソースコードやUI定義、画像などの関連リソースも確認できます。GTK 4公式gtk4-demoドキュメント

gtk4-demoを使うと、次のような点を確認できます。

  • GTK 4のGUIウィンドウがWindows上で開く
  • ボタンなどのウィジェットが表示される
  • マウスで画面を操作できる
  • 一覧や入力欄などが動作する
  • GTK 4のDLLが正しく読み込まれる
  • GTK 4のデータファイルが見つかる

C言語のプログラムをまだ書いていなくても、gtk4-demoを起動すればGTK 4の動作を確認できます。

gtk4-demoの場所を確認する

次のコマンドを実行します。

which gtk4-demo

実行結果の例

/ucrt64/bin/gtk4-demo

Windows形式では、次の場所に対応します。

C:\msys64\ucrt64\bin\gtk4-demo.exe

/ucrt64/bin/gtk4-demoと表示されれば、UCRT64向けGTK 4に付属するデモが見つかっています。

gtk4-demoを起動する

MSYS2 UCRT64ターミナルで、次のコマンドを実行します。

gtk4-demo

しばらくすると、GTK Demoというデモ画面が表示されます。

ターミナルでは、gtk4-demoが終了するまで入力待ちのプロンプトへ戻らない場合があります。これは、ターミナルから起動したGUIアプリケーションが動作中だからです。

gtk4-demoのウィンドウを閉じると、ターミナルへ入力待ちのプロンプトが戻ります。

gtk4-demoのサンプル画面を確認する

gtk4-demoには、GTK 4の機能を確認するためのサンプルが一覧で表示されます。

画面の構成やサンプル名はGTK 4のバージョンによって変わる場合がありますが、基本的には次のような内容を確認できます。

  • ウィンドウ
  • ボタン
  • ラベル
  • 入力欄
  • リスト
  • メニュー
  • ダイアログ
  • 画像
  • アニメーション
  • ドラッグアンドドロップ
  • CSSによる装飾
  • レイアウト
  • テキスト表示
  • 描画機能

一覧からサンプルを選択すると、そのサンプルの説明やソースコードが表示されます。

サンプルによっては、実行用のボタンをクリックすると別のウィンドウが開きます。実際にボタンをクリックしたり、入力欄へ文字を入力したりしてみましょう。

確認しておきたい操作

gtk4-demoが起動したら、次の操作を試します。

  1. 左側または一覧部分からサンプルを選択する
  2. サンプルの説明が表示されることを確認する
  3. ソースコードを表示するタブがあれば開く
  4. 実行用のボタンがあればクリックする
  5. 開いたサンプルウィンドウを操作する
  6. サンプルウィンドウを閉じる
  7. gtk4-demo本体を閉じる
  8. ターミナルへプロンプトが戻ることを確認する

ソースコードが表示されても、この段階ですべてを理解する必要はありません。GTK 4ではどのような画面を作れるのか、まずは雰囲気をつかんでみましょう。

図3:gtk4-demoでGTK 4の動作を確認する

この図から分かること

gtk4-demoが起動すれば、GTK 4の実行ファイル、DLL、データファイルなどが正しく利用できています。

サンプル一覧から項目を選ぶと、さまざまなGUI部品の見た目や動作を確認できます。画面内に表示されるソースコードは、今後GTK 4の使い方を調べるときの参考にもなります。

gtk4-demoを終了する

開いたサンプルウィンドウがある場合は、先にそのウィンドウを閉じます。

続いて、gtk4-demo本体の閉じるボタンをクリックします。

gtk4-demoが終了すると、ターミナルへ次のようなプロンプトが戻ります。

ユーザー名@コンピューター名 UCRT64 ~
$

プロンプトが戻れば、gtk4-demoの実行は終了しています。

正常にインストールできたときの確認結果

ここまでの確認がすべて成功すると、次の状態になります。

確認内容期待する結果
使用中のターミナルプロンプトにUCRT64と表示される
pkg-config --versionバージョン番号が表示される
which pkg-config/ucrt64/bin/pkg-configと表示される
pkg-config --modversion gtk44から始まるGTKのバージョンが表示される
which gtk4-demo/ucrt64/bin/gtk4-demoと表示される
gtk4-demoGTK 4のサンプル画面が開く
画面操作ボタンや一覧などをマウスで操作できる

これらを確認できれば、GTK 4のインストールは完了しています。

パッケージが見つからない場合

インストール時に次のようなエラーが表示されることがあります。

error: target not found: mingw-w64-ucrt-x86_64-gtk4

この場合は、次の点を確認します。

  • パッケージ名を正しく入力したか
  • ucrtの部分が抜けていないか
  • x86_64のつづりが正しいか
  • gtk4の数字が4になっているか
  • MSYS2全体を更新したか
  • インターネットへ接続されているか

まず、MSYS2全体を更新します。

pacman -Syu

その後、インストールコマンドをもう一度実行します。

pacman -S --needed mingw-w64-ucrt-x86_64-gtk4

pkg-configが見つからない場合

次のエラーが表示された場合は、pkg-configを実行できていません。

bash: pkg-config: command not found

GCCツールチェーンが正しくインストールされているか確認します。

pacman -S --needed mingw-w64-ucrt-x86_64-toolchain

必要に応じて、UCRT64向けのpkgconfを個別に確認します。

pacman -S --needed mingw-w64-ucrt-x86_64-pkgconf

インストール後はターミナルを閉じ、MSYS2 UCRT64を起動し直してから、もう一度確認します。

pkg-config --version

pkg-configがGTK 4を見つけられない場合

次のようなエラーが表示される場合があります。

Package gtk4 was not found in the pkg-config search path.
Package 'gtk4', required by 'virtual:world', not found

この場合は、次の点を確認します。

  • GTK 4パッケージのインストールが完了しているか
  • MSYS2 UCRT64ターミナルを使用しているか
  • which pkg-configの結果が/ucrt64/bin/pkg-configになっているか
  • パッケージ名ではなくgtk4を指定しているか
  • インストール後にターミナルを起動し直したか

GTK 4をもう一度確認するには、次のコマンドを実行します。

pacman -S --needed mingw-w64-ucrt-x86_64-gtk4

その後、MSYS2 UCRT64を起動し直し、次のコマンドを実行します。

pkg-config --modversion gtk4

gtk4-demoが起動しない場合

gtk4-demoを実行しても画面が表示されない場合は、次の順番で確認します。

  1. which gtk4-demoを実行する
  2. /ucrt64/bin/gtk4-demoと表示されるか確認する
  3. GTK 4パッケージを再確認する
  4. MSYS2 UCRT64ターミナルを起動し直す
  5. gtk4-demoをもう一度実行する

確認コマンドは次のとおりです。

which gtk4-demo
pacman -S --needed mingw-w64-ucrt-x86_64-gtk4
gtk4-demo

DLLが見つからないというエラーが表示される場合は、PowerShellやコマンドプロンプトから起動していないか確認します。

環境構築中は、必要なDLLを見つけられるMSYS2 UCRT64ターミナルからgtk4-demoを起動しましょう。

インストール後のGTK 4を更新する

今後、GTK 4の新しいバージョンが公開されたときは、MSYS2全体の更新によってGTK 4も更新されます。

pacman -Syu

GTK 4だけを公式サイトから別にダウンロードして、C:\msys64のファイルへ上書きする必要はありません。MSYS2から導入したGTK 4は、pacmanで管理します。

GTK 4とgtk4-demoの動作を確認できたら、GUI開発に必要な中心部分はそろっています。次はVisual Studio Codeをインストールし、C言語のソースファイルを編集する環境を準備していきます。