2013-02-12 6 views
0

Я добавил код в существующее большое приложение и должен сделать GLib необходимым, так как мой код опирается на него. Для разработки, я просто вручную редактирует Makefile, чтобы добавитьДобавление GLib к существующему приложению с помощью gnu toolchain (configure, Makefile и т. Д.)

-lglib-2.0 

к LIBS = переменной и

-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include $< 

линии, начиная с $ {CC}.

Однако я не могу понять, как сделать это постоянным/переносным в приложении, то есть когда кто-то выполнит ./configure в будущем, итоговый файл Makefile должен также включать выше (в зависимости от ситуации, поскольку они зависят на выходе pkg-config, я узнал). Кодовый я обновил включают в себя следующие файлы из ГНУ цепи инструмента:

Makefile.in 
Makefile.manual 
config.h.in 
configure 
configure.in 

У меня есть только несколько CS градусов и несколько лет опыта в области развития, поэтому остается GNU набор инструментов совершенно непроницаемы для меня. :// От googling вокруг, у меня создается впечатление, что также должно быть be a configure.ac file или что-то, где я должен добавить макрос, требующий glib, но такой файл не включен в пакет, и я нахожусь в состоянии осознанной беспомощности с помощью весь automake/autoconf/configure/makefile. Заранее благодарим за любые советы или указатели!

ответ

2
  1. Вы не должны редактировать любые сгенерированные файлы вручную. Это включает в себя окончательный Makefile, используемый для создания приложения.
  2. В configure.ac перечислены все зависимости, поэтому проверка GLib должна идти туда. Из этого файла создается ваш окончательный сценарий оболочки configure.
  3. GLib предоставляет описание pkgconfig, поэтому вы почти всегда хотите использовать его для получения правильных флагов компиляции и ссылок.
  4. Объединение pkgconfig и Autotools - это просто вызов макроса PKG_CHECK_MODULES. Autotools Mythbuster - отличный источник, который описывает, как это сделать.
  5. В конце концов, сводится к добавлению этих линий к вашему configure.ac:

    PKG_PROG_PKG_CONFIG 
    PKG_CHECK_MODULES([GLIB], [glib-2.0]) 
    

    и эти строки в Makefile.am:

    foo_CXXFLAGS = $(GLIB_CFLAGS) 
    foo_LIBS = $(GLIB_LIBS) 
    
+0

Вы знаете, что вы можете использовать 'foo_CXXFLAGS = $ (GLIB_CFLAGS) ', правильно? automake автоматически добавляет переменные назначения формы 'GLIB_CFLAGS = @ GLIB_CFLAGS @' для любой переменной 'AC_SUBST''d, если только она не была подавлена' AM_SUBST_NOTMAKE'. –

+0

Спасибо, я уже нашел этот макрос (см. Мою ссылку в вопросе), но моя проблема в том, что пакет не распространяет файл configure.ac (или Makefile.am). Итак, у меня его нет. : -/Он распространяет только файлы, перечисленные в моем вопросе выше. Могу ли я изменить один из них? – JJC

+0

@JJC: Вы уверены, что у вас есть все источники, а не только архив-архив? – matthias