
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
これは質問に対する答えではありませんが、できるだけ良いようです...