Autotools (Automake/Libtool) からライブラリを構築しようとしています
私のディレクトリ構造は次のとおりです。
src/MyLib/*some_sources*.cpp/.h + a Makefile.am
src/MyLib/Parsers/*some_other_sources.cpp/.h Makefile.am
すべてのソース ファイルを同じディレクトリに配置すると (つまり、「パーサー」サブディレクトリはありません)、すべて正常に動作します。(コンパイル後、他のプログラムからのリンク)
しかし、「理想的な構造」(ベース ソース フォルダー + 「パーサー」サブディレクトリ) を試すと、ライブラリを使用してプログラムをコンパイルしようとすると、リンケージ エラーが発生します。
<< usr/local/lib/mylib.so: undefined reference to <a function from "/Parsers" subdir > >>
Libtool は、コンパイル中に私のサブディレクトリ「パーサー」を静的にリンクしていないようです (おそらく、外部共有ライブラリと見なされますか?)
これが私のベース「Makefile.am」です:
lib_LTLIBRARIES = mylib.la
SUBDIRS = Parsers .
mylib_la_SOURCES = <base_dir_source_files>
そして、パーサーのサブディレクトリにある私の「Makefile.am」:
mylib_la_SOURCES = <parsers_dir_source_files>
もちろん、「パーサー」サブディレクトリを作成した後、すべてをlibtoolize-dし、autoreconf-edしました。
よろしくお願いいたします。