我在./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,
这不会扩展我想要的方式。这样做的正确方法是什么?
答案 0 :(得分:3)
pkg-config
包含有用的autoconf宏,它们在man
页面上进行了描述。在configure.ac
中使用类似的内容:
PKG_CHECK_MODULES([GTKMM], [gtkmm-3.0])
您现在可以在GTKMM_CFLAGS
个文件中替换GTKMM_LIBS
,Makefile.am
。
答案 1 :(得分: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@