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
これは質問への答えにはなりませんが、おそらくこれ以上良い答えはないと思います...