2009-08-21 24 views
3

GNU make &のファイルを他の場所に保存するにはどうしたらいいですか?私は私が使用してコンパイルされ得ることを働いているプロジェクトをしている:事は、私は何でもサンドボックスによって生成されたファイルを/ SVN/gitの/ HGである、現在のフォルダを汚染したくないGNU makeで生成されたファイルを別の場所に保存する

./configure --prefix=/usr && make && su -c 'make install' 

ですそのコマンド。これらのファイルを別の場所に置いておきたい。

make O=/home/user/linux-output 

答えて

8

:このような何か、それは似ていた場合、私は知りませんが、私はソースからのLinuxカーネルをコンパイルするとき、私はどこ「作る」ために「O」オプションを渡すことによって、出力に含まを置くことを指定することができますMakefileはこの機能をサポートしていなければなりません。

mkdir ../build 
cd ../build 
../configure --prefix=/usr 
make 
make install 

(それは確かにgccのビルドのために推奨されます):

私はを考えるにautoconfが生成されたメイクファイルは、以下のすべての使用をサポートしています。

+2

これは、Makefileと生成されたバイナリを別のディレクトリに移動します。しかしconfigureスクリプト自身とMakefile.inはソースツリーを '汚染'します。 –

+1

はい、Douglasが正しいです。.in、.m4ファイル(使用されている場合)は引き続きソースツリーにあります。 – hyperboreean

+1

これはvpathビルドと呼ばれ、開発者がパッケージを正しく書き込む場合にのみ機能します。あなたがパッケージのメンテナーであるときは、vpathが作業を確実にすることはあなたの責任です。 –

1

Kristofがすでに指摘しているように、GNU autotoolsは本質的にconfigureレベルのツリー外のビルドをサポートしています。

ソースツリーのMakefileとビルドされたバイナリを簡単に持つことができます。

自動生成されたアーティファクトをソースツリーからすべて取り出すには、はるかに多くの作業が必要です。

source_copyの変更をworking_copyにコピーするスクリプトがあり、元のソースツリーを元の状態に戻すことができるworking_copyのconfigureスクリプトなどを慎重に保存します。しかし、非常に非効率なので、私はそれをお勧めしません。

通常のツリー構造外のビルドを推奨し、ソースツリー内の残りの自動生成ファイルを明示的に除外します。

+1

Autoconfはvpathビルドをサポートしていません。 Automakeは、automakeはautoconfと組み合わせて使用​​されることが多いが、必ずしもそうではない。 –

+0

私はvpathを言っていませんでした、私は木の上で言いました。明らかに、vpathを行うことができるMakefileの作成を可能にするビットはautomakeですが、実行中のconfigure-of-treeのサポートはautoconfでなければなりません。 –

+0

autoconfをautotoolsに変更するのは協力的な作業です。 –

関連する問題