私は共有ライブラリを構築しており、ソース ツリーは次のように構成されています。
Makefile.am
src/
Makefile.am
srcfile1.h
srcfile1.cpp
...
thirdpaty/
Makefile.am
lib1/
Makefile.am
lib1.h
lib1.cpp
...
lib2/
...
サードパーティのライブラリの一部は独自の Automake ファイルとともに配布されているため、再帰的な Automake を使用しています。src/Makefile.am
通常の libtool マクロが含まれています。
lib_LTLIBRARIES = libmylib.la
libmylib_la_SOURCES = scrfile1.h srcfile1.cpp ...
メイン ライブラリをサード パーティのライブラリにリンクするにはどうすればよいですか? Autotoolsのマニュアルを読むと、サードパーティのライブラリは libtool の便利なライブラリとしてビルドする必要があると思われるので、thirdparty/lib1/Makefile.am
.
noinst_LTLIBRARIES = libthirdpaty1.la
libthirdpaty1_la_SOURCES = lib1.cpp lib1.h
に以下を追加しますsrc/Makefile.am
。
libmylib_la_LIBADD = $(top_buildir)/thirdparty/lib1/libthirdpaty1.la
私のルート Makefile.am は INCLUDES マクロを保持しています:
INCLUDES = -I$(top_builddir)/thirdparty
しかし、この構成でビルドすると、未定義のシンボル エラーが発生します。
このソース コードを構成し、すべてのライブラリをリンクする正しい方法は何ですか?