2012-03-18 1 views
1

У меня есть следующий Makefile.am внутри ./src, где мне нужно создавать зависимости для приложения gtkmm.Выполнение команды оболочки внутри makefile.am

bin_PROGRAMS = sampleapplication 
sampleapplication_SOURCES = exampleapplication.cpp examplewindow.cpp main.cpp 
sampleapplication_INCLUDES = ../include/exampleapplication.h ../include/examplewindow.h 
sampleapplication_LDADD = $(DEPS_LIBS) 

make_flags=`pkg-config gtkmm-3.0 --cflags --libs` 
AM_CPPFLAGS = ${make_flags} -I$(top_srcdir)/include 

Однако, когда я запускаю эту команду я вижу вторит на экране при запуске этой команды является:

g++ -DHAVE_CONFIG_H -I. -I.. `pkg-config gtkmm-3.0 --cflags --libs` -I../include -g -O2 -MT exampleapplication.o -MD -MP -MF .deps/exampleapplication.Tpo -c -o exampleapplication.o exampleapplication.cpp 
In file included from /usr/include/gtk-3.0/gtk/gtk.h:43:0, 
       from /usr/include/gtkmm-3.0/gtkmm/buildable.h:29, 

Который не расширяется так, как я хочу. Каков правильный способ сделать это?

+0

Если вы создадите флаги при создании 'Makefile.in', это будут флаги, специфичные для системы _your_, а не для пользователя, который позже будет использовать систему' Makefile.in' на _his_. –

+0

Каков правильный подход к этому? Я только начинаю изучать, как писать систему сборки с помощью autotools. –

+2

Я бы, наверное, поместил его в 'configure.ac', особенно проверить, доступен ли gtkmm-3.0 или нет. –

ответ

3

pkg-config включает в себя полезные AutoConf макросы, которые описаны на странице man. В configure.ac использования что-то вроде:

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

Теперь у вас есть GTKMM_CFLAGS, GTKMM_LIBS для подстановки в Makefile.am файлов.

+0

Также описан на стр. 1 руководства gtkmm. Разве никто не читает руководства больше? :-) – ergosys

2

Вы можете добавить это вместе с проверкой на gtkmm, в configure.ac.

configure.ac:

AC_MSG_CHECKING([for gtkmm-3.0]) 
if pkg-config gtkmm-3.0; then 
    AC_MSG_RESULT([yes]) 
    GTKMM_CPPFLAGS=`pkg-config gtkmm-3.0 --cflags` 
    GTKMM_LDFLAGS=`pkg-config gtkmm-3.0 --libs-only-other` 
    GTKMM_LIBS=`pkg-config gtkmm-3.0 --libs-only-l` 
    AC_SUBST(GTKMM_CPPFLAGS) 
    AC_SUBST(GTKMM_LDFLAGS) 
    AC_SUBST(GTKMM_LIBS) 
else 
    AC_MSG_RESULT([no]) 
fi 

Makefile.am:

sampleapplication_CPPFLAGS += @[email protected] 
sampleapplication_LDFLAGS += @[email protected] 
sampleapplication_LIBS  += @[email protected]