手作業でコーディングされたMakefileのセットからGNUAutoMakeに変換しているCアプリケーションがあります。これには、インターフェイスヘッダーといくつかのプラットフォーム依存の実装を含むサブディレクトリがあります。現在、実装が選択され、そのディレクトリ内の固定名のオブジェクトファイルにビルドされています。次に、ドライバーインターフェイスを使用するコードは、そのオブジェクトファイルにリンクし、適切なドライバーを自動的に取得します。
このシステムをAutoToolsを使用するように変換する最良の方法は何ですか?私はすでにAutoConfが正しいドライバー実装ファイルの代わりを作成しています。実装ファイルを入れることができる変数を持つAutoMakeターゲットを取得する方法がわかりませEXTRA_*_SOURCES
ん*_LDADD
。中間オブジェクトファイルをあきらめて、それらを使用するプログラムターゲットのリストに入れる必要がありますか?
編集: ptomatoのおかげで解決しました。
Automakeの依存関係の解決のため、マニュアルの「条件付きソース」セクションで説明されているように、すべての可能なソースに*_SOURCES
とで名前を付ける必要があります。したがって、ライブラリスタンザは実際には次のようになります。EXTRA_*_SOURCES
noinst_LIBRARIES = libdriver.a
libdriver_a_SOURCES = driver.h
EXTRA_libdriver_a_SOURCES = driver-linux.c driver-windows.c driver-osx.c
libdriver_a_LIBADD = @DRIVERIMPL@