2016-10-09 5 views
2

私は現在、GNU autotoolsツールチェーンを使用するために私のC++プロジェクトを移植しています。私はライブラリの依存関係を設定する際に問題があります。何が起きているかは、-lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2のように、コマンドにarのg ++​​用のフラグを与えることです。ここでAutotoolsはarにライブラリフラグを追加します

src/Makefile.amのためのコードです:

noinst_LIBRARIES = libccade.a 
libccade_a_SOURCES = CCade.h CCade_graphics.h CCade_graphics.cpp CCade_util.h CCade_util.cpp 
libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 
libccade_a_CFLAGS = $(libsdl2_CFLAGS) $(libsdl2_image_CFLAGS) 

ここmakeを出して何:

ar cru libccade.a CCade_graphics.o CCade_util.o -lSDL2 -L/usr/local/lib -lSDL2_image -lSDL2 
ar: invalid option -- 'L' 
Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file... 
...(more documentation on ar)... 

それはlibccade_a_LIBADDから引数を追加しているようだが、私はその変数を削除すると、それはwouldnフラグをg++に渡してください。私は何をしますか?

答えて

2

あなたがlibtoolを使用していないようです。私は、一般的にやっていることは、私のconfigure.acでこれを入れている:

AM_PROG_LIBTOOL 

そして、私のMakefile.amはのようになります。第二の可変がnoinst_ LT LIBRARIESであることを確認すること

noinst_HEADERS = CCade.h CCade_graphics.h CCade_util.h 

noinst_LTLIBRARIES = libccade.la 

libccade_la_SOURCES = CCade_graphics.cpp CCade_util.cpp 
libccade_la_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 
libccade_la_CPPFLAGS = $(libsdl2_CFLAGS) $(libsdl2_image_CFLAGS) 

、それはあなたのために働くはずです。

+0

私はあなたの解決方法を試してみました。私は一歩近づいていると信じていますが、私はまだ同じエラーが発生します。 –

+0

@MathManiac **あなたのコードを自分のコードに置き換えましたか、そこにコードが残っていますか? – Galik

+1

*編集:*待つ..私はあなたが2番目の変数に "LT"を追加したことに気づいた。それを今変更する.. –

0

あなたは、この行を行うには?:任意のリンクを行いません

libccade_a_LIBADD = $(libsdl2_LIBS) $(libsdl2_image_LIBS) 

Arが、それは他のライブラリを気にしない何を期待してなかったので、ここではそれらを指定する必要はありません。

関連する問題