web-dev-qa-db-ja.com

configure script / cmakeを再度実行せずにインストールパスを変更する方法

(10-15)分を構築するのにかなりの時間がかかるプロジェクトに取り組んでいます。コンパイルエラーがあるかどうかを確認するために再コンパイルしました。ここで、インストールディレクトリを変更して、新しい変更を含む新しいバージョンの実行可能ファイルを作成します。 「make install」が古い場所ではなく新しい場所にインストールされるように、インストールパスを変更する方法はありますか?

30
A. K.

CMakeによって生成されたメイクファイルは、メイクファイルに対して DESTDIRコーディング規約 をサポートします。したがって、makeの呼び出し時にDESTDIR変数を設定することにより、デフォルトのインストール場所をオーバーライドできます。

$ make install DESTDIR=/opt/local

CMakeを再実行する必要はありません。

45
sakra

これが一般的に正しいかどうかはわかりませんが、 受け入れられた答え by sakraが正しく機能しないアプリケーションの例を挙げることができます。 ITKのインストール時にDESTDIRを変更してインストールディレクトリを変更すると、既に形成されているインストールパスにDESTDIRが追加されます。

make install DESTDIR=/opt/local

[...]

-- Installing: /opt/local/usr/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]

一方、次の この回答Fraserによって、再コンパイルせずに適切なインストールパスが作成されます。

cmake -DCMAKE_INSTALL_PREFIX=/opt/local /path/to/ITK_source
make install

[...]

-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
17
kara deniz

-DCMAKE_INSTALL_PREFIX=<somewhere different to last time>を使用してCMakeを実行しても、プロジェクトを再コンパイルする必要はありません。他のコマンドラインパラメーターをCMakeに渡すと、たとえばwould影響を受けるターゲットの再構築を強制するコンパイラフラグを変更しますが、インストールプレフィックスを変更するだけでは変更しません。

13
Fraser

DESTDIRとプレフィックスの標準的な定義は次のとおりです。ファイルは$ DESTDIR $ prefixにインストールされますが、最終的なインストール場所が$ prefixであるかのように準備されます。

したがって、DESTDIRは、バイナリのパッケージまたはtarballを作成する人専用です。 CMAKE_INSTALL_PREFIXは、ビルドされたバイナリを最終的にどこに置くかを指定したい人向けです。

9
Dan Kegel

誰かがCMakeを使用していない場合に備えて、Makefileでそれを行う方法があります。ビルドディレクトリにMakefile.configファイルが生成されている場合は、prefixを見つけます。このprefixは、バイナリ/ヘッダーなどがインストールされるインストールpathです。これを変更すると、変更されたpathにバイナリ/ヘッダーがインストールされます。

4
A. K.