Всего десять часов назад я хотел попробовать GTK на своем ноутбуке с Arch-Linux и нашел GTK. -introduction-Страница. Я скопировал коды 1:1 в три файла в VSCode. Наивная попытка просто построить его показала мне, что это требует дальнейшей настройки. Поэтому я добавил папку .vscode с двумя необходимыми JSON-файлами. Хотя IntelliSense теперь отлично работает с кодом, GCC по-прежнему выдает ошибки, что #include <gtkmm/button.h>
не найден, тем временем я могу щелкнуть правой кнопкой мыши заголовок и открыть его таким образом. Библиотеки, которые я добавил к аргументам, которые я получил pkg-config --cflags --libs gtkmm-3.0
. Я надеюсь, что кто-то знает, что мне не хватает. У меня были проблемы как с clang, так и с gcc.
c_cpp_properties.json
"env": {
"myDefaultIncludePath": [
"${workspaceFolder}",
"${workspaceFolder}/include"
],
"myCompilerPath": "/usr/local/bin/g++"
},
"configurations": [
{
"name": "include paths",
"intelliSenseMode": "gcc-x64"
,
"includePath": [
"/usr/include/gtk-3.0",
"/usr/include/pango-1.0",
"/usr/include/glib-2.0",
"/usr/lib/glib-2.0/include",
"/usr/include/harfbuzz",
"/usr/include/freetype2",
"/usr/include/libpng16",
"/usr/include/libmount",
"/usr/include/blkid",
"/usr/include/fribidi",
"/usr/include/cairo",
"/usr/include/lzo",
"/usr/include/pixman-1",
"/usr/include/gdk-pixbuf-2.0",
"/usr/include/gio-unix-2.0",
"/usr/include/cloudproviders",
"/usr/include/atk-1.0",
"/usr/include/at-spi2-atk/2.0",
"/usr/include/dbus-1.0",
"/usr/lib/dbus-1.0/include",
"/usr/include/at-spi-2.0",
"/usr/include/gtkmm-3.0",
"/usr/lib/gtkmm-3.0/include",
"/usr/include/giomm-2.4",
"/usr/lib/giomm-2.4/include",
"/usr/include/glib-2.0",
"/usr/lib/glib-2.0/include",
"/usr/include/libmount",
"/usr/include/blkid",
"/usr/include/glibmm-2.4",
"/usr/lib/glibmm-2.4/include",
"/usr/include/sigc++-2.0",
"/usr/lib/sigc++-2.0/include",
"/usr/include/gtk-3.0",
"/usr/include/pango-1.0",
"/usr/include/harfbuzz",
"/usr/include/freetype2",
"/usr/include/libpng16",
"/usr/include/fribidi",
"/usr/include/cairo",
"/usr/include/lzo",
"/usr/include/pixman-1",
"/usr/include/gdk-pixbuf-2.0",
"/usr/include/gio-unix-2.0",
"/usr/include/cloudproviders",
"/usr/include/atk-1.0",
"/usr/include/at-spi2-atk/2.0",
"/usr/include/dbus-1.0",
"/usr/lib/dbus-1.0/include",
"/usr/include/at-spi-2.0",
"/usr/include/cairomm-1.0",
"/usr/lib/cairomm-1.0/include",
"/usr/include/pangomm-1.4",
"/usr/lib/pangomm-1.4/include",
"/usr/include/atkmm-1.6",
"/usr/lib/atkmm-1.6/include",
"/usr/include/gtk-3.0/unix-print",
"/usr/include/gdkmm-3.0",
"/usr/lib/gdkmm-3.0/include"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "gcc debug build active file - with GTK",
"command": "/usr/bin/gcc",
"args": [
"-g",
"-pthread",
"/usr/include/gtkmm-3.0",
"/usr/lib/gtkmm-3.0/include",
"/usr/include/giomm-2.4",
"/usr/lib/giomm-2.4/include",
"/usr/include/glib-2.0",
"/usr/lib/glib-2.0/include",
"/usr/include/libmount",
"/usr/include/blkid",
"/usr/include/glibmm-2.4",
"/usr/lib/glibmm-2.4/include",
"/usr/include/sigc++-2.0",
"/usr/lib/sigc++-2.0/include",
"/usr/include/gtk-3.0",
"/usr/include/pango-1.0",
"/usr/include/harfbuzz",
"/usr/include/freetype2",
"/usr/include/libpng16",
"/usr/include/fribidi",
"/usr/include/cairo",
"/usr/include/lzo",
"/usr/include/pixman-1",
"/usr/include/gdk-pixbuf-2.0",
"/usr/include/gio-unix-2.0",
"/usr/include/cloudproviders",
"/usr/include/atk-1.0",
"/usr/include/at-spi2-atk/2.0",
"/usr/include/dbus-1.0",
"/usr/lib/dbus-1.0/include",
"/usr/include/at-spi-2.0",
"/usr/include/cairomm-1.0",
"/usr/lib/cairomm-1.0/include",
"/usr/include/pangomm-1.4",
"/usr/lib/pangomm-1.4/include",
"/usr/include/atkmm-1.6",
"/usr/lib/atkmm-1.6/include",
"/usr/include/gtk-3.0/unix-print",
"/usr/include/gdkmm-3.0",
"/usr/lib/gdkmm-3.0/include",
"${file}",
"-lgtkmm-3.0",
"-latkmm-1.6",
"-lgdkmm-3.0",
"-lgiomm-2.4",
"-lgtk-3",
"-lgdk-3",
"-lz",
"-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",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
Эти настройки в значительной степени основаны на этом стеке. -Переполнение.
Вывод компилятора:
> Executing task: /usr/bin/gcc -g -pthread /usr/include/gtkmm-3.0 /usr/lib/gtkmm-3.0/include /usr/include/giomm-2.4
/usr/lib/giomm-2.4/include /usr/include/glib-2.0 /usr/lib/glib-2.0/include /usr/include/libmount /usr/include/blkid /usr/include/glibmm-2.4 /usr/lib/glibmm-2.4/include /usr/include/sigc++-2.0 /usr/lib/sigc++-2.0/include /usr/include/gtk-3.0 /usr/include/pango-1.0 /usr/include/harfbuzz /usr/include/freetype2 /usr/include/libpng16 /usr/include/fribidi /usr/include/cairo /usr/include/lzo /usr/include/pixman-1 /usr/include/gdk-pixbuf-2.0 /usr/include/gio-unix-2.0 /usr/include/cloudproviders /usr/include/atk-1.0 /usr/include/at-spi2-atk/2.0 /usr/include/dbus-1.0 /usr/lib/dbus-1.0/include /usr/include/at-spi-2.0 /usr/include/cairomm-1.0 /usr/lib/cairomm-1.0/include /usr/include/pangomm-1.4 /usr/lib/pangomm-1.4/include /usr/include/atkmm-1.6 /usr/lib/atkmm-1.6/include /usr/include/gtk-3.0/unix-print /usr/include/gdkmm-3.0 /usr/lib/gdkmm-3.0/include /home/bernhard/Projekte/hellogtk/helloworld.h -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lgtk-3 -lgdk-3 -lz -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 -o /home/bernhard/Projekte/hellogtk/helloworld <
/home/bernhard/Projekte/hellogtk/helloworld.h:5:10: schwerwiegender Fehler: gtkmm/window.h: Datei oder Verzeichnis nicht gefunden
5 | #include <gtkmm/window.h>
| ^~~~~~~~~~~~~~~~
Kompilierung beendet.
Der Terminalprozess "/bin/bash '-c', '/usr/bin/gcc -g -pthread /usr/include/gtkmm-3.0 /usr/lib/gtkmm-3.0/include /usr/include/giomm-2.4 /usr/lib/giomm-2.4/include /usr/include/glib-2.0 /usr/lib/glib-2.0/include /usr/include/libmount /usr/include/blkid /usr/include/glibmm-2.4 /usr/lib/glibmm-2.4/include /usr/include/sigc++-2.0 /usr/lib/sigc++-2.0/include /usr/include/gtk-3.0 /usr/include/pango-1.0 /usr/include/harfbuzz /usr/include/freetype2 /usr/include/libpng16 /usr/include/fribidi /usr/include/cairo /usr/include/lzo /usr/include/pixman-1 /usr/include/gdk-pixbuf-2.0 /usr/include/gio-unix-2.0 /usr/include/cloudproviders /usr/include/atk-1.0 /usr/include/at-spi2-atk/2.0 /usr/include/dbus-1.0 /usr/lib/dbus-1.0/include /usr/include/at-spi-2.0 /usr/include/cairomm-1.0 /usr/lib/cairomm-1.0/include /usr/include/pangomm-1.4 /usr/lib/pangomm-1.4/include /usr/include/atkmm-1.6 /usr/lib/atkmm-1.6/include /usr/include/gtk-3.0/unix-print /usr/include/gdkmm-3.0 /usr/lib/gdkmm-3.0/include /home/bernhard/Projekte/hellogtk/helloworld.h -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lgtk-3 -lgdk-3 -lz -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 -o /home/bernhard/Projekte/hellogtk/helloworld'" konnte nicht gestartet werden (Exitcode: 1).