
C言語GUI入門|#include <gtk/gtk.h>のincludePathエラー
このエラーは、VS Code の C/C++拡張機能(IntelliSense)が gtk/gtk.h の場所を見つけられていないときに表示されます。
GTK 4をMSYS2のUCRT64にインストールしている場合、gtk.h は通常、
C:\msys64\ucrt64\include\gtk-4.0\gtk\gtk.hにあります。MSYS2公式でも、UCRT64版GTK 4は /ucrt64/include/gtk-4.0 以下にヘッダーファイルを配置しています。
まず、GTK 4の問題なのか、VS Codeだけの問題なのかを確認しましょう。
フォルダごとに設定する
ここで紹介する方法は、VSCodeで開くフォルダごとに行う必要があります。
1. MSYS2 UCRT64 Bashを開く
VS Codeのターミナルを MSYS2 UCRT64 Bash にしてください。
次を実行します。
echo $MSYSTEM次のようになればOKです。
UCRT64MSYS2でも、GTK 4の開発ではUCRT64環境を利用できます。
2. GTK 4がインストールされているか確認する
次を実行してください。
pkg-config --modversion gtk4たとえば、
4.22.4のようにバージョン番号が表示されれば、GTK 4は認識されています。
さらに、
ls /ucrt64/include/gtk-4.0/gtk/gtk.hを実行します。
次のように表示されれば問題ありません。
/ucrt64/include/gtk-4.0/gtk/gtk.hもし、
No such file or directoryとなる場合はGTK 4をインストールします。
pacman -S mingw-w64-ucrt-x86_64-gtk4これがUCRT64版GTK 4の公式パッケージ名です。
3. 実際にコンパイルできるか確認する
たとえば hello_gtk.c があるディレクトリへ移動して、
gcc hello_gtk.c -o hello_gtk.exe $(pkg-config --cflags --libs gtk4)を実行してください。
コンパイルできる場合
ここが重要です。
コンパイルできるのにVS Codeで赤い波線が出る場合、GTK 4には問題ありません。
問題は、
#include <gtk/gtk.h>をVS CodeのIntelliSenseが見つけられていないことです。
つまり、
GCC → gtk/gtk.h を見つけられる
VS Code → gtk/gtk.h を見つけられないという状態です。
4. VS Codeの c_cpp_properties.json を設定する
VS Codeで
Ctrl + Shift + Pを押します。
そして、検索窓から「C/C++: Edit Configurations (JSON)」を入力して検索します。
C/C++: Edit Configurations (JSON)を選択してください。
プロジェクトの
.vscode
└─ c_cpp_properties.jsonを編集します。
たとえば C:\cgui をVS Codeで開いている場合、
C:\cgui
├─ .vscode
│ └─ c_cpp_properties.json
├─ chap04
├─ chap05
...という構成になります。
まず次の設定を試してください。
{
"configurations": [
{
"name": "MSYS2 UCRT64",
"includePath": [
"${workspaceFolder}/**",
"C:/msys64/ucrt64/include/**",
"C:/msys64/ucrt64/lib/glib-2.0/include",
"C:/msys64/ucrt64/lib/graphene-1.0/include",
"C:/msys64/ucrt64/include/gtk-4.0",
"C:/msys64/ucrt64/include/glib-2.0",
"C:/msys64/ucrt64/include/cairo",
"C:/msys64/ucrt64/include/pango-1.0",
"C:/msys64/ucrt64/include/harfbuzz",
"C:/msys64/ucrt64/include/gdk-pixbuf-2.0",
"C:/msys64/ucrt64/include/graphene-1.0"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.26100.0",
"compilerPath": "C:/msys64/ucrt64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}特に重要なのが、
"compilerPath": "C:/msys64/ucrt64/bin/gcc.exe"です。
VS Codeに、
このプロジェクトではMSYS2 UCRT64のGCCを使っています
と教える設定になります。
また、
"C:/msys64/ucrt64/include/**"によって、GTK 4を含むUCRT64側のヘッダーをIntelliSenseの検索対象にします。
5. より確実に設定したい場合
GTK 4では、実際には gtk-4.0 だけでなくGLib、Pango、Cairoなど複数のインクルードディレクトリを使用します。
MSYS2 UCRT64 Bashで、
pkg-config --cflags gtk4を実行してください。
たとえば次のような大量の情報が表示されます。
-IC:/msys64/ucrt64/include/gtk-4.0
-IC:/msys64/ucrt64/include/pango-1.0
-IC:/msys64/ucrt64/include
-IC:/msys64/ucrt64/include/harfbuzz
-IC:/msys64/ucrt64/include/freetype2
-IC:/msys64/ucrt64/include/cairo
...
-IC:/msys64/ucrt64/include/glib-2.0
-IC:/msys64/ucrt64/lib/glib-2.0/includepkg-config は、GTK 4をコンパイルするために必要なインクルードパスをこのように出力する仕組みです。MSYS2ではUCRT64環境のpkg-configが /ucrt64/include や /ucrt64/lib/pkgconfig を認識するよう設定されています。
この情報をVS Codeにも教えると、IntelliSenseがより正確になります。
6. 設定後にVS Codeを再読み込みする
c_cpp_properties.json を保存したら、
Ctrl + Shift + Pから
Developer: Reload Windowを実行してください。
それでも赤線が残る場合は、
Ctrl + Shift + Pから
C/C++: Reset IntelliSense Databaseを実行します。
そのあと hello_gtk.c を開き直します。
7. gtk/gtk.h の書き方は変更しない
ここも重要です。
現在、
#include <gtk/gtk.h>としているのであれば、これは正しい書き方です。
次のように変更する必要はありません。
#include <gtk-4.0/gtk/gtk.h>これはおすすめしません。
正しくは、
#include <gtk/gtk.h>のまま、
C:\msys64\ucrt64\include\gtk-4.0をインクルード検索対象にします。
つまり、
C:\msys64\ucrt64\include\gtk-4.0
↓
gtk
↓
gtk.hなので、
#include <gtk/gtk.h>で見つかるわけです。
今回の環境でおすすめする確認順序
C言語GUI教材で使用している Windows + MSYS2 + UCRT64 + GCC + GTK 4 + VS Code の構成なら、次の順番で確認するのがおすすめです。
① UCRT64か確認
↓
echo $MSYSTEM
↓
② GTK 4を確認
↓
pkg-config --modversion gtk4
↓
③ gtk.hを確認
↓
ls /ucrt64/include/gtk-4.0/gtk/gtk.h
↓
④ GCCでコンパイル
↓
gcc hello_gtk.c -o hello_gtk.exe \
$(pkg-config --cflags --libs gtk4)
↓
⑤ コンパイル成功
↓
VS CodeのIntelliSenseだけの問題
↓
⑥ c_cpp_properties.jsonを設定特に、④のコンパイルが成功するかどうかを確認してください。
もし
gcc hello_gtk.c -o hello_gtk.exe $(pkg-config --cflags --libs gtk4)では正常にコンパイルできるのに、
ソース ファイルを開けません "gtk/gtk.h"だけがVS Code上に表示されているのであれば、GTK 4のインストールは正常で、VS CodeのincludePath設定を直せばよい可能性が非常に高いです。
今回の教材環境なら、まず上の c_cpp_properties.json の設定を入れる方法を試してみるとよいでしょう。








