Gtkmm ошибка компиляции - PullRequest
3 голосов
/ 16 июля 2011

ОС: Windows 7

Компилятор: MinGW

IDE: Code :: Blocks

Я только что установил Gtkmm на свой компьютер в папке C: / gtkmm / инастроить пример программы.Когда я скомпилировал его, он выдал ошибку «gtkmm.h: Нет такого файла или каталога»

Я попытался установить переменную PATH в C: / gtkmm / include и C: /gtkmm/gtkmm-2.4, нони сработало.Затем я попытался использовать #include "C: /gtkmm/include/gtkmm-2.4/gtkmm.h", и это просто дало массу ошибок, говорящих, что он не знает, где находятся несколько десятков файлов.

Я также слышал, что вам нужно поставить pkg-config gtkmm-2.4 --cflags --libs в опциях компилятора, но это тоже не сработало.

Что я делаю не так и как мне это исправить?

Ответы [ 3 ]

1 голос
/ 17 июля 2011

pkg-config - это вспомогательная функция для добавления путей cflags и lib к строке компилятора.

Что вам нужно сделать, это добавить путь к библиотекам и cflags в строку компилятора.Я не уверен на 100%, как это сделать в code :: blocks., Хотя

В Ubuntu 11.04 вам понадобится все это, чтобы скомпилировать даже простую программу gtkmm:

Libs (pkg-config --libs gtkmm-2.4:

-pthread -lgtkmm-2.4 -latkmm-1.6 -lgdkmm-2.4 -lgiomm-2.4 -lpangomm-1.4 -lgtk-x11-2.0 -lglibmm-2.4 -lcairomm-1.0 -lsigc-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lm -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0

cflags paths (pkg-config --clfags gtkmm-2.4):

-I/usr/include/atk-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/gio-unix-2.0/ -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/include/atkmm-1.6 -I/usr/include/giomm-2.4 -I/usr/lib/giomm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/lib/pangomm-1.4/include -I/usr/include/gtk-2.0 -I/usr/include/gtk-unix-print-2.0 -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/cairomm-1.0 -I/usr/lib/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/lib/gtk-2.0/include -I/usr/include/gdk-pixbuf-2.0

По сути, вам придется изменить каждый экземпляр /usr/include/ и /usr/lib/ на c:\path-to-library\

Я не уверен, сколько из вышеперечисленного вам нужно с MinGW, но с GCC на Linux, отбрасывая любыеиз них программы gtkmm не компилируются. Надеюсь, это по крайней мере поставит вас на правильный путь.

1 голос
/ 16 июля 2011

Что вы имеете в виду под переменной PATH? Глобальные окна поиска PATH для исполняемых файлов? Это было бы неправильно.

Вам нужно искать в вашей IDE Include search path или header search path или что-то в этом роде.

Эта команда pkg-config работает для вас, когда вы выполняете ее в командной строке? Такой pkg-config при использовании в Unix-системе заключен в backticks `, что приводит к замене его выводом. Не знаю, может ли ваша IDE сделать это, но если она работает из командной строки, у вас есть хотя бы список всех необходимых включений.

0 голосов
/ 01 июля 2015

Использовать автоинструменты C ++ проекта.Вам нужно отредактировать только два файла configure.ac и Makefile.am.Добавьте эту строку к configure.ac

PKG_CHECK_MODULES([GTKMM], [gtkmm-3.0])

, а эти строки к Makefile.am

program_CPPFLAGS = $(GTKMM_CFLAGS)

program_LDADD = $ (GTKMM_LIBS)

...