2012-03-18 21 views
1

私はgtkmmアプリケーションの依存関係を生成する必要がある./src内に以下のMakefile.amを持っています。私は、このコマンドを実行すると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_システム固有のフラグになります。後で' _his_システム上で 'Makefile.in'を使用するユーザではありません。 –

+0

これに正しいアプローチは何ですか?私はちょうどautotoolsでビルドシステムを書く方法を学び始めています。 –

+2

私はおそらく、 'configure.ac'に入れました。特に、gtkmm-3.0が利用可能かどうかのチェックがあります。 –

答えて

3

pkg-configmanページに記載されている便利なAutoconfマクロを含んでいます。以下のようなconfigure.ac使用の何かで:

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

あなたは今Makefile.amファイルに置換可能なGTKMM_CFLAGSGTKMM_LIBSを持っています。

+0

gtkmmマニュアルの1ページにも記載されています。誰もマニュアルを読んでいないのですか? :-) – 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] 
関連する問題