Выполнить команду оболочки внутри makefile.am - PullRequest
1 голос
/ 18 марта 2012

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

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,

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

Ответы [ 2 ]

3 голосов
/ 18 марта 2012

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

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

Теперь у вас есть GTKMM_CFLAGS, GTKMM_LIBS для замены в Makefile.am файлах.

2 голосов
/ 18 марта 2012

Вы можете добавить это вместе с проверкой 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 += @GTKMM_CPPFLAGS@
sampleapplication_LDFLAGS  += @GTKMM_LDFLAGS@
sampleapplication_LIBS     += @GTKMM_LIBS@
...