gtkmm.h не может открыть исходный файл (но работает с флагами pkg-config при компиляции) - PullRequest
0 голосов
/ 04 апреля 2020

Когда я компилирую свою программу, использующую gtkmm, мне всегда нужно добавлять в команду флаги pkg-config, а #include<gtkmm.h> всегда подчеркивается красным (не удается открыть исходный файл).

Как бы я мог чтобы избавиться от ошибки и не нужно вводить pkg-config gtkmm-3.0 --cflags --libs каждый раз, когда я компилирую свой код, код ниже:

#include <gtkmm.h>
#include <iostream>

void hello_world() {
    std::cout << "Hello world." << std::endl;
}

int main(int argc, char* argv[])
{
    Gtk::Main app(argc, argv);
    auto builder = Gtk::Builder::create_from_file("test.glade");

    Gtk::Window *main_window;
    builder->get_widget("window", main_window);
    Gtk::Button *button1;
    builder->get_widget("button1", button1);

    button1->signal_clicked().connect(sigc::ptr_fun(&hello_world));

    Gtk::Main::run(*main_window);

}

Без флагов я просто получаю ошибку:

main.cpp:1:10: fatal error: gtkmm.h: No such file or directory
#include <gtkmm.h>
      ^~~~~~~~~
compilation terminated.

1 Ответ

0 голосов
/ 02 мая 2020

Вы набрали в своем терминале?

echo `pkg-config gtkmm-3.0 --cflags --libs`

Это отобразит:

-pthread -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include -I/usr/include/atkmm-1.6 -I/usr/include/gtk-3.0/unix-print -I/usr/include/gdkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -I/usr/include/giomm-2.4 -I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/libdrm -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/cairomm-1.0 -I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/uuid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo -lsigc-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0

Это все, что ваше приложение должно быть скомпилировано. Вы можете набрать все эти строки вручную, но это не очень хорошее решение, потому что этот контент зависит от вашей среды и может изменить pkg-config, чтобы скрыть для вас страдания.

...