(10-15)分を構築するのにかなりの時間がかかるプロジェクトに取り組んでいます。コンパイルエラーがあるかどうかを確認するために再コンパイルしました。ここで、インストールディレクトリを変更して、新しい変更を含む新しいバージョンの実行可能ファイルを作成します。 「make install」が古い場所ではなく新しい場所にインストールされるように、インストールパスを変更する方法はありますか?
CMakeによって生成されたメイクファイルは、メイクファイルに対して DESTDIRコーディング規約 をサポートします。したがって、makeの呼び出し時にDESTDIR
変数を設定することにより、デフォルトのインストール場所をオーバーライドできます。
$ make install DESTDIR=/opt/local
CMakeを再実行する必要はありません。
これが一般的に正しいかどうかはわかりませんが、 受け入れられた答え 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[...]
-DCMAKE_INSTALL_PREFIX=<somewhere different to last time>
を使用してCMakeを実行しても、プロジェクトを再コンパイルする必要はありません。他のコマンドラインパラメーターをCMakeに渡すと、たとえばwould影響を受けるターゲットの再構築を強制するコンパイラフラグを変更しますが、インストールプレフィックスを変更するだけでは変更しません。
DESTDIRとプレフィックスの標準的な定義は次のとおりです。ファイルは$ DESTDIR $ prefixにインストールされますが、最終的なインストール場所が$ prefixであるかのように準備されます。
したがって、DESTDIRは、バイナリのパッケージまたはtarballを作成する人専用です。 CMAKE_INSTALL_PREFIXは、ビルドされたバイナリを最終的にどこに置くかを指定したい人向けです。
誰かがCMakeを使用していない場合に備えて、Makefileでそれを行う方法があります。ビルドディレクトリにMakefile.configファイルが生成されている場合は、prefix
を見つけます。このprefix
は、バイナリ/ヘッダーなどがインストールされるインストールpath
です。これを変更すると、変更されたpath
にバイナリ/ヘッダーがインストールされます。