C言語GUI入門|開発環境の動作を確認する

ここまでの作業で、WindowsにMSYS2、GCC、GTK 4、Visual Studio Codeをインストールし、作業ディレクトリC:\cguiを用意しました。

しかし、インストールが完了しているように見えても、使用するターミナルや環境変数が正しく設定されていなければ、GCCやGTK 4を利用できないことがあります。

そこで第2章の最後に、次の項目を順番に確認します。

  • MSYS2 UCRT64環境が起動しているか
  • gccコマンドを実行できるか
  • UCRT64用のGCCが選ばれているか
  • pkg-configコマンドを実行できるか
  • pkg-configからGTK 4を認識できるか
  • gtk4-demoを起動できるか
  • GTK 4のサンプル画面が正しく表示されるか

この段階では、まだC言語のソースプログラムは作成しません。インストール済みのコマンドとGTK 4のデモアプリケーションを使って、開発環境全体が正しく動作しているか確認します。

動作確認の全体的な流れ

開発環境は、次の順番で確認すると問題の原因を見つけやすくなります。

MSYS2 UCRT64 Bash
        ↓
       GCC
        ↓
    pkg-config
        ↓
      GTK 4
        ↓
    gtk4-demo

先にgtk4-demoだけを起動するのではなく、ターミナル、GCC、pkg-config、GTK 4の順番で確認します。

確認するもの確認内容
MSYS2 UCRT64 BashUCRT64環境が起動しているか
GCCC言語のコンパイラーを実行できるか
pkg-configライブラリ情報を取得できるか
GTK 4pkg-configからGTK 4が見つかるか
gtk4-demoGTK 4のGUIをWindows上で表示できるか

途中で問題が見つかった場合は、その場所から先へ進まず、ターミナルの種類、インストール済みパッケージ、PATHなどを確認します。

Visual Studio CodeでC:\cguiを開く

最初に、Visual Studio Codeで作業ディレクトリを開きます。

  1. Visual Studio Codeを起動します。
  2. メニューバーから「ファイル」を選択します。
  3. 「フォルダーを開く」を選択します。
  4. C:\cguiを選択します。
  5. 「フォルダーの選択」を押します。

左側のエクスプローラーには、前の項で作成したディレクトリが表示されます。

C:\cgui
   ├─ chap03
   ├─ chap04
   ├─ chap05
   ├─ chap06
   ├─ chap07
   └─ chap08

続いて、メニューバーから「ターミナル」を選択し、「新しいターミナル」を開きます。

ターミナル名がMSYS2 UCRT64 Bashになっていることを確認してください。

図1:開発環境を順番に確認する

この図から分かること

開発環境は複数のソフトウェアを組み合わせて構成されています。

gtk4-demoが起動しない場合でも、原因がGTK 4にあるとは限りません。UCRT64環境が起動していない、GCCが正しくインストールされていない、pkg-configがGTK 4を見つけられないといった可能性もあります。

順番に確認することで、どの段階に問題があるのか判断しやすくなります。

MSYS2 UCRT64環境を確認する

GCCやGTK 4を確認する前に、使用中のターミナルがMSYS2 UCRT64 Bashになっていることを確認します。

次のコマンドを実行してください。

echo $MSYSTEM

正しい実行結果は次のとおりです。

UCRT64

何も表示されない場合は、PowerShellやコマンドプロンプトを使用している可能性があります。

次のように表示された場合は、MSYS2の別の環境が起動しています。

MSYS
MINGW64
CLANG64

本コンテンツで使用する環境はUCRT64です。ターミナル右上のプロファイル一覧からMSYS2 UCRT64 Bashを選び、新しいターミナルを開いてください。

作業ディレクトリを確認する

現在の作業ディレクトリも確認しておきましょう。

pwd

Visual Studio CodeでC:\cguiを開いている場合、次のように表示されます。

/c/cgui

C:\cguiと/c/cguiは同じ場所です。

Windowsでの表記MSYS2での表記
C:\cgui/c/cgui
C:\cgui\chap03/c/cgui/chap03
C:\cgui\chap04/c/cgui/chap04

別の場所が表示された場合は、次のコマンドで移動します。

cd /c/cgui

もう一度pwdを実行し、/c/cguiと表示されることを確認します。

gccが実行できることを確認する

GCCは、C言語のソースファイルをコンパイルするためのコンパイラーです。

次のコマンドでGCCのバージョンを確認します。

gcc --version

GCCが正しくインストールされていれば、次のような情報が表示されます。

gcc.exe (Rev..., Built by MSYS2 project) 15.x.x
Copyright (C) Free Software Foundation, Inc.

実際に表示されるバージョン番号は、MSYS2をインストールまたは更新した時期によって異なります。15.x.x以外の番号が表示されても、すぐに問題だと判断する必要はありません。

重要なのは、次の2点です。

  • gcc: command not foundと表示されない
  • GCCのバージョン情報が表示される

MSYS2では、UCRT64向けのGCCがmingw-w64-ucrt-x86_64-gccパッケージとして提供されています。

使用しているGCCの場所を確認する

gcc --versionが実行できても、別の環境にあるGCCが選ばれている可能性があります。

次のコマンドで、実際に使用されるGCCの場所を確認します。

which gcc

UCRT64用のGCCが選ばれていれば、次のように表示されます。

/ucrt64/bin/gcc

環境によっては、末尾に.exeが付いて表示されることもあります。

/ucrt64/bin/gcc.exe

どちらもUCRT64用のGCCです。

表示結果状態
/ucrt64/bin/gcc正しいUCRT64用GCC
/ucrt64/bin/gcc.exe正しいUCRT64用GCC
/mingw64/bin/gccMINGW64環境のGCC
/usr/bin/gccMSYS環境のGCCである可能性がある
何も表示されないGCCが見つかっていない

本コンテンツでは、/ucrt64/binにあるGCCを使用します。

GCCが見つからない場合

gcc --versionを実行したとき、次のようなメッセージが表示されることがあります。

bash: gcc: command not found

この場合は、次の点を確認してください。

  • echo $MSYSTEMの結果がUCRT64になっているか
  • GCCツールチェーンをインストールしたか
  • MSYS2の更新が完了しているか
  • パッケージのインストール後にターミナルを再起動したか
  • PowerShellではなくMSYS2 UCRT64 Bashを使用しているか

GCCツールチェーンが未導入の場合は、MSYS2 UCRT64 Bashで次のコマンドを実行します。

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

選択を求められた場合は、表示内容を確認してEnterキーを押します。

インストール後は、現在のターミナルを閉じてMSYS2 UCRT64 Bashを開き直し、もう一度確認します。

gcc --version
which gcc

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

pkg-configは、GTK 4を使ったプログラムのコンパイルに必要な情報を取得するための仕組みです。

GTK 4のヘッダファイルが保存されている場所や、リンクするライブラリの情報などをGCCへ渡すときに使用します。

MSYS2ではpkgconfがpkg-configの実装として標準的に使用されています。

次のコマンドでpkg-configのバージョンを確認します。

pkg-config --version

正しく実行できれば、次のようにバージョン番号が表示されます。

2.x.x

ここで表示されるのはpkg-configとして動作するpkgconfのバージョンです。GTK 4のバージョンではありません。

pkg-configの場所を確認する

次のコマンドでpkg-configの場所を確認します。

which pkg-config

UCRT64環境のpkg-configが選ばれていれば、次のように表示されます。

/ucrt64/bin/pkg-config

環境によっては、次のように末尾へ.exeが付く場合があります。

/ucrt64/bin/pkg-config.exe

重要なのは、パスが/ucrt64/binから始まっていることです。

図2:GCCとpkg-configの確認結果

この図から分かること

gccとpkg-configは、コマンドを実行できるだけでなく、/ucrt64/binにあるものが選ばれていることも重要です。

whichを使ってコマンドの場所を確認すると、UCRT64以外の環境にあるツールを誤って使用していないか判断できます。

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

pkg-config --versionを実行したとき、次のように表示される場合があります。

bash: pkg-config: command not found

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

  • MSYS2 UCRT64 Bashを使用しているか
  • GTK 4パッケージのインストールが完了しているか
  • pkgconfパッケージがインストールされているか
  • パッケージのインストール後にターミナルを再起動したか

UCRT64用のpkgconfが未導入の場合は、次のコマンドでインストールできます。

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

インストール後はターミナルを開き直し、もう一度確認します。

pkg-config --version
which pkg-config

GTK 4が認識されていることを確認する

pkg-configが実行できても、GTK 4の情報が登録されているとは限りません。

次のコマンドで、pkg-configから認識されているGTK 4のバージョンを確認します。

pkg-config --modversion gtk4

GTK 4が正しくインストールされていれば、次のようにバージョン番号が表示されます。

4.22.4

このバージョン番号は実行例です。MSYS2を更新した時期によって、4.22.4とは異なる番号が表示される場合があります。

先頭が4で始まるバージョン番号が表示されれば、GTK 4が認識されています。

MSYS2のUCRT64リポジトリでは、GTK 4がmingw-w64-ucrt-x86_64-gtk4パッケージとして提供されています。

GTK 3とGTK 4を区別する

GTKには、GTK 3とGTK 4があります。

pkg-configで指定する名前も異なります。

GTKの種類pkg-configで指定する名前
GTK 3gtk+-3.0
GTK 4gtk4

GTK 4が存在するか終了ステータスで確認する

pkg-configには、指定したライブラリが存在するか調べる方法もあります。

pkg-config --exists gtk4

GTK 4が見つかった場合、このコマンドは何も表示しません。

何も表示されないと不安に感じるかもしれませんが、正常な動作です。直前に実行したコマンドの終了ステータスを確認します。

echo $?

GTK 4が見つかった場合は、次のように表示されます。

0

終了ステータス0は、コマンドが正常に完了したことを表します。

GTK 4が見つからなかった場合は、0以外の値が表示されます。

GTK 4のコンパイル情報を確認する

pkg-configがGTK 4のコンパイル情報を取得できることも確認できます。

ヘッダファイルを検索するための情報は、次のコマンドで表示できます。

pkg-config --cflags gtk4
pkg-config --cflags gtk4

実行すると、次のような情報が長く表示されます。

-Iucrt64/include/gtk-4.0 -Iucrt64/include/pango-1.0 ...

実際の表示には、パスの先頭にスラッシュが付いた/ucrt64/includeなど、複数のヘッダーファイル検索パスが含まれます。

リンクするライブラリの情報は、次のコマンドで表示できます。

pkg-config --libs gtk4

実行結果には、次のようなライブラリ指定が含まれます。

-lgtk-4 -lgdk-4 -lpangowin32-1.0 ...

表示される内容や順番はGTK 4のバージョンや環境によって異なります。

ここでは内容をすべて暗記する必要はありません。エラーメッセージではなく、-Iや-lから始まる情報が表示されることを確認できれば十分です。

GTK 4が認識されない場合

pkg-config --modversion gtk4を実行したとき、次のようなメッセージが表示される場合があります。

Package gtk4 was not found in the pkg-config search path.
Package gtk4 was not found

この場合は、pkg-config自体は実行できていますが、GTK 4の情報が見つかっていません。

次の点を確認してください。

  • GTK 4パッケージをインストールしたか
  • UCRT64用のGTK 4をインストールしたか
  • echo $MSYSTEMの結果がUCRT64になっているか
  • which pkg-configの結果が/ucrt64/binから始まっているか
  • MSYS2の更新後にターミナルを再起動したか

UCRT64用のGTK 4が未導入の場合は、次のコマンドでインストールします。

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

インストール後は、MSYS2 UCRT64 Bashを開き直します。

pkg-config --modversion gtk4

GTK 4のバージョン番号が表示されれば、認識されています。

gtk4-demoの場所を確認する

GTK 4が認識されたら、gtk4-demoの場所を確認します。

which gtk4-demo

正しくインストールされていれば、次のように表示されます。

/ucrt64/bin/gtk4-demo

環境によっては、次のように表示される場合もあります。

/ucrt64/bin/gtk4-demo.exe

gtk4-demoは、GTK 4に含まれるさまざまなウィジェットや機能を確認するためのデモアプリケーションです。

GTKの公式ドキュメントでは、gtk4-demoは開発者に役立つ形で多数のGTKウィジェットを紹介するサンプル集と説明されています。

gtk4-demoを起動する

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

gtk4-demo

GTK 4が正しく動作していれば、Windows上にGTK Demoのウィンドウが表示されます。

デモ画面には、GTK 4で利用できるさまざまな機能が分類して表示されます。

  • ボタン
  • ラベル
  • 入力欄
  • リスト
  • ダイアログ
  • レイアウト
  • アニメーション
  • 画像表示
  • テキスト表示
  • ドラッグ操作

表示される項目は、インストールされているGTK 4のバージョンによって異なる場合があります。

GTKの公式ドキュメントでも、GTKのインストールを確認する方法としてgtk4-demoの実行が案内されています。

GTK 4のサンプル画面を確認する

gtk4-demoが起動したら、画面の左側にあるサンプル一覧から項目を選択してみましょう。

項目を選択すると、右側または別のウィンドウにデモ画面が表示されます。デモによっては、次の内容も確認できます。

  • サンプルの実行画面
  • 使用されているウィジェット
  • サンプルのソースコード
  • UI定義ファイル
  • 使用している画像などのリソース

gtk4-demoの目的は、GTK 4で作成できる画面や操作を実際に確認することです。この時点でソースコードを理解する必要はありません。

ボタンを押す、一覧を選択する、ウィンドウサイズを変更するなど、いくつかのGUI操作を試してみましょう。

gtk4-demoを終了する

確認が終わったら、gtk4-demoのウィンドウ右上にある閉じるボタンを押します。

ターミナルがgtk4-demoの終了を待っている場合は、ウィンドウを閉じるとコマンド入力ができる状態へ戻ります。

ユーザー名@コンピューター名 UCRT64 /c/cgui
$

表示されるプロンプトの形式は環境によって異なります。

図3:gtk4-demoによる最終確認

この図から分かること

gtk4-demoが起動すると、GTK 4のライブラリを読み込み、Windows上にGUIウィンドウを表示できることが分かります。

pkg-configでGTK 4のバージョンを取得でき、さらにgtk4-demoを起動できれば、GTK 4を使ったC言語GUI開発を始めるための基本的な環境が整っています。

gtk4-demoが見つからない場合

gtk4-demoを実行したとき、次のように表示される場合があります。

bash: gtk4-demo: command not found

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

  • echo $MSYSTEMの結果がUCRT64か
  • GTK 4パッケージがインストールされているか
  • which gtk4-demoでコマンドが見つかるか
  • /ucrt64/binがPATHに含まれているか
  • インストール後にターミナルを再起動したか

PATHは次のコマンドで確認できます。

echo $PATH

UCRT64環境では、先頭付近に/ucrt64/binが含まれています。

/ucrt64/bin:/usr/bin:...

/ucrt64/binが含まれていない場合は、UCRT64以外のターミナルを使用している可能性があります。

gtk4-demoのウィンドウが表示されない場合

gtk4-demoを実行してもウィンドウが表示されない場合は、ターミナルにエラーメッセージが出ていないか確認します。

考えられる原因には、次のようなものがあります。

  • GTK 4パッケージのインストールが途中で失敗した
  • MSYS2のパッケージが部分的に古い
  • UCRT64以外の環境から起動している
  • 必要なDLLが見つからない
  • セキュリティソフトウェアによって起動が妨げられている
  • Windowsの表示環境に問題がある

最初にMSYS2全体を更新します。

pacman -Syu

更新中にターミナルを閉じるよう求められた場合は、画面の指示に従います。ターミナルを開き直した後、もう一度更新を実行します。

pacman -Syu

更新が完了したら、MSYS2 UCRT64 Bashを開き直して確認します。

echo $MSYSTEM
pkg-config --modversion gtk4
which gtk4-demo
gtk4-demo

DLLに関するエラーが表示される場合

gtk4-demoを起動したときにDLLが見つからないというメッセージが表示される場合は、UCRT64のbinディレクトリが正しく参照されていない可能性があります。

UCRT64用の実行ファイルとDLLは、主に次の場所に保存されています。

C:\msys64\ucrt64\bin

MSYS2では次のように表します。

/ucrt64/bin

次のコマンドでPATHを確認してください。

echo $PATH

先頭付近に/ucrt64/binが含まれていれば、UCRT64用のDLLを見つけられる状態です。

PowerShellから直接gtk4-demo.exeを起動すると、必要なDLLを見つけられない場合があります。本コンテンツではMSYS2 UCRT64 Bashからgtk4-demoを起動します。

確認コマンドを順番に実行する

開発環境全体を一度に確認する場合は、次の順番でコマンドを実行します。

echo $MSYSTEM
pwd
gcc --version
which gcc
pkg-config --version
which pkg-config
pkg-config --modversion gtk4
which gtk4-demo
gtk4-demo

期待する確認結果は次のとおりです。

コマンド確認できること正常な状態
echo $MSYSTEMMSYS2環境UCRT64と表示される
pwd作業ディレクトリ/c/cguiと表示される
gcc --versionGCCの実行バージョン情報が表示される
which gccGCCの場所/ucrt64/bin/gccと表示される
pkg-config --versionpkg-configの実行バージョン番号が表示される
which pkg-configpkg-configの場所/ucrt64/bin/pkg-configと表示される
pkg-config --modversion gtk4GTK 4の認識4で始まるバージョン番号が表示される
which gtk4-demoデモの場所/ucrt64/bin/gtk4-demoと表示される
gtk4-demoGTK 4の動作GTK Demoのウィンドウが表示される

第3章へ進む前の確認

次の項目をすべて確認してください。

  • Visual Studio CodeでC:\cguiを開いている
  • 統合ターミナルがMSYS2 UCRT64 Bashになっている
  • echo $MSYSTEMの結果がUCRT64になる
  • pwdの結果が/c/cguiになる
  • gcc --versionでGCCの情報が表示される
  • which gccの結果が/ucrt64/binから始まる
  • pkg-config --versionでバージョン番号が表示される
  • which pkg-configの結果が/ucrt64/binから始まる
  • pkg-config --modversion gtk4でGTK 4のバージョンが表示される
  • which gtk4-demoの結果が/ucrt64/binから始まる
  • gtk4-demoのウィンドウが表示される
  • デモの項目を選択して画面を確認できる
  • gtk4-demoを閉じるとターミナルへ戻る

すべて確認できたら、Windows上でC言語とGTK 4を使用する開発環境の準備は完了です。次の第3章では、chap03ディレクトリを使って、通常のC言語プログラムを作成し、GCCによるコンパイルと実行の流れを学びます。