GNU Automake パッケージから特定のファイルをビルドするにはどうすればよいですか?

GNU Automake パッケージから特定のファイルをビルドするにはどうすればよいですか?

GNU Automake を使用するソース パッケージの場合、典型的なビルドは次のようになります。

cd ${srcdir}
./congigure
./make

すべてではなく単一のファイルをビルドするには、make通常、以下を受け入れます。

$ make path/to/file

ただし、エラーが返されます:

make: *** No rule to make target 'path/to/file'. Stop.

必要なファイルは、独自の makefile を含むサブディレクトリにあります。そのサブディレクトリに移動して./configure && make file、失敗するたびに不足している依存関係を解決し、同様の操作を行ってそれらの依存関係を提供し、必要なファイルが正常に生成されるmakeまでプロセスを繰り返すことができます。make

でも、きっともっと簡単な方法があるはず…?

では、GNU Automake によってクリーンにビルドされる一般的な Linux パッケージを想定して、単一のファイル (具体的にはバイナリ実行可能ファイル) をビルドするように指示することは可能ですか?

答え1

サブディレクトリに makefile がある場合は、代わりにその makefile を呼び出す必要がある可能性があります。

make -C path/to file

答え2

私が思いついた最善の方法は、forループを使用して依存するサブディレクトリを構築し、そのディレクトリ内からファイルを構築することです。

for lib in dependency1 dependency2 dependency3
do
  cd ${srcdir}/libs/${lib}
  ./configure --prefix=/usr
  make LDFLAGS+=-lstdc++
done

cd ${srcdir}/libs/directory

./configure --prefix=/usr
  --localstatedir=/var \
  --mandir=/usr/share/man
make LDFLAGS+=-lstdc++ file

これは質問への答えにはなりませんが、おそらくこれ以上良い答えはないと思います...

関連情報