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

您可以在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 回答