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

しかし、間違いなくもっと簡単な方法がありますか…?

それでは、一般的なLinuxパッケージがGNU Automakeによってきちんと構築されたと仮定すると、単一のファイル(特にバイナリ実行可能ファイル)を構築するように指示できますか?

答え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

これは質問に対する答えではありませんが、できるだけ良いようです...

関連情報