1

./src 内に次の Makefile.am があり、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,

これは、私が望むように拡張しません。これを行う正しい方法は何ですか?

4

2 に答える 2

4

pkg-configページで説明されている便利な autoconf マクロが含まれていmanます。使用中configure.acのようなもの:

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

これでGTKMM_CFLAGS、ファイルGTKMM_LIBSで置換できるようになりました。Makefile.am

于 2012-03-18T07:20:53.783 に答える
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 += @GTKMM_CPPFLAGS@
sampleapplication_LDFLAGS  += @GTKMM_LDFLAGS@
sampleapplication_LIBS     += @GTKMM_LIBS@
于 2012-03-18T06:05:59.143 に答える