前提・実現したいこと
C言語/GTKを公式サイトのサンプルコード("gtk_test.c"で保存した)をコンパイル・実行ができるようにしたい。
発生している問題・エラーメッセージ
サンプルコードをコンパイルしたときは以下のような結果になってしまった。
console
1$ gcc -o gtk_test gtk_test---.c 'pkg-config --cflags --libs gtkmm-3.0' 2gcc.exe: error: pkg-config --cflags --libs gtkmm-3.0: No such file or directory
(追記)
この部分が解決できていない。
また、Visual Studio Codeを利用しているが「#includeエラーが検出されました。includePathを更新してください。」と「ソースファイルを開けません"glibconfig.h"(dependency of "gtk/gtk.h")」の2つのエラーが出ています。そのためc_cpp_ptoprtyird.jsonを
"includePath": [ "${workspaceFolder}/**", "C:/msys64/mingw64/include/gtk-3.0", "C:/msys64/mingw64/include/glib-2.0" ],
に変更したが改善は見られなかった。
("C:/msys64/mingw64/include/glib-2.0"に関しては「ソースファイルを開けません"glib.h"(dependency of "gtk/gtk.h")」とエラーがでたため追記したが)
(追記)
この部分は"C:\MinGW\bin"から"C:\msys64\mingw64\bin"に変更した後、以下のようになってエラーはでなくなった。
MSYS2にて'pkg-config --cflags --libs gtkmm-3.0'を確認しようとした結果は
console
1$ pkg-config --cflags --libs gtkmm-3.0 2-IC:/msys64/mingw64/bin/../include/gtkmm-3.0 -IC:/msys64/mingw64/bin/../lib/gtkmm-3.0/include -IC:/msys64/mingw64/bin/../include/giomm-2.4 -IC:/msys64/mingw64/bin/../lib/giomm-2.4/include -IC:/msys64/mingw64/bin/../include -IC:/msys64/mingw64/bin/../include/glib-2.0 -IC:/msys64/mingw64/bin/../lib/glib-2.0/include -mms-bitfields -IC:/msys64/mingw64/bin/../include/glibmm-2.4 -IC:/msys64/mingw64/bin/../lib/glibmm-2.4/include -IC:/msys64/mingw64/bin/../include/sigc++-2.0 -IC:/msys64/mingw64/bin/../lib/sigc++-2.0/include -IC:/msys64/mingw64/bin/../include/gtk-3.0 -IC:/msys64/mingw64/bin/../include/pango-1.0 -IC:/msys64/mingw64/bin/../include/harfbuzz -IC:/msys64/mingw64/bin/../include/freetype2 -IC:/msys64/mingw64/bin/../include/libpng16 -mms-bitfields -IC:/msys64/mingw64/bin/../include/fribidi -IC:/msys64/mingw64/bin/../include/cairo -IC:/msys64/mingw64/bin/../include/lzo -IC:/msys64/mingw64/bin/../include/pixman-1 -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -IC:/msys64/mingw64/bin/../include/gdk-pixbuf-2.0 -mms-bitfields -mms-bitfields -mms-bitfields -IC:/msys64/mingw64/bin/../include/atk-1.0 -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -IC:/msys64/mingw64/bin/../include/cairomm-1.0 -IC:/msys64/mingw64/bin/../lib/cairomm-1.0/include -IC:/msys64/mingw64/bin/../include/pangomm-1.4 -IC:/msys64/mingw64/bin/../lib/pangomm-1.4/include -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -IC:/msys64/mingw64/bin/../include/atkmm-1.6 -IC:/msys64/mingw64/bin/../lib/atkmm-1.6/include -IC:/msys64/mingw64/bin/../include/gdkmm-3.0 -IC:/msys64/mingw64/bin/../lib/gdkmm-3.0/include -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -mms-bitfields -pthread -mms-bitfields -LC:/msys64/mingw64/bin/../lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lgtk-3 -lgdk-3 -lz -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lpangowin32-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lpangomm-1.4 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -lcairo -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0 -lintl
となった。
公式サイトのサンプルコード(https://www.gtk.orgより引用)
C
1#include <gtk/gtk.h> 2 3static void on_activate (GtkApplication *app) { 4 // Create a new window 5 GtkWidget *window = gtk_application_window_new (app); 6 // Create a new button 7 GtkWidget *button = gtk_button_new_with_label ("Hello, World!"); 8 // When the button is clicked, close the window passed as an argument 9 g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_close), window); 10 gtk_window_set_child (GTK_WINDOW (window), button); 11 gtk_window_present (GTK_WINDOW (window)); 12} 13 14int main (int argc, char *argv[]) { 15 // Create a new application 16 GtkApplication *app = gtk_application_new ("com.example.GtkApplication", 17 G_APPLICATION_FLAGS_NONE); 18 g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL); 19 return g_application_run (G_APPLICATION (app), argc, argv); 20}
試したこと
pkg-configがインストールされてるかを確認しようとした。
console
1$ pkg-config --version 21.7.4
エラーは直らず変化が見られなかった。
(追記)
Windowsの環境変数の設定でgccのコンパイラは"C:\MinGW\bin"から"C:\msys64\mingw64\bin"に変更
console
1$ gcc -v 2Using built-in specs. 3COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe 4COLLECT_LTO_WRAPPER=C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/lto-wrapper.exe 5Target: x86_64-w64-mingw32 6Configured with: ../gcc-10.3.0/configure --prefix=/mingw64 --with-local-prefix=/mingw64/local --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --with-native-system-header-dir=/mingw64/x86_64-w64-mingw32/include --libexecdir=/mingw64/lib --enable-bootstrap --enable-checking=release --with-arch=x86-64 --with-tune=generic --enable-languages=c,lto,c++,fortran,ada,objc,obj-c++,jit --enable-shared --enable-static --enable-libatomic --enable-threads=posix --enable-graphite --enable-fully-dynamic-string --enable-libstdcxx-filesystem-ts=yes --enable-libstdcxx-time=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-lto --enable-libgomp --disable-multilib --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-libiconv --with-system-zlib --with-gmp=/mingw64 --with-mpfr=/mingw64 --with-mpc=/mingw64 --with-isl=/mingw64 --with-pkgversion='Rev5, Built by MSYS2 project' --with-bugurl=https://github.com/msys2/MINGW-packages/issues --with-gnu-as --with-gnu-ld --with-boot-ldflags='-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high -Wl,--disable-dynamicbase -static-libstdc++ -static-libgcc' 'LDFLAGS_FOR_TARGET=-pipe -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high' --enable-linker-plugin-flags='LDFLAGS=-static-libstdc++\ -static-libgcc\ -pipe\ -Wl,--dynamicbase,--high-entropy-va,--nxcompat,--default-image-base-high\ -Wl,--stack,12582912' 7Thread model: posix 8Supported LTO compression algorithms: zlib zstd 9gcc version 10.3.0 (Rev5, Built by MSYS2 project)
補足情報(FW/ツールのバージョンなど)
使用OS: Windows 10
MSYS2にて
console
1pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-glade mingw-w64-x86_64-toolchain base-devel
のコマンドを入力しGTKのインストールを行った。