25

ソースディレクトリを移動した後にCMakeを再実行すると、次のようなエラーが発生します。

CMakeエラー:現在のCMakeCache.txtディレクトリ/new-path/CMakeCache.txtは、CMakeCache.txtが作成されたディレクトリ/old-pathとは異なります。これにより、バイナリが間違った場所に作成される可能性があります。よくわからない場合は、CMakeCache.txtを再編集してください

これに対処するための最良のアプローチは何ですか?キャッシュの削除は機能しているようです。CMakeCache.txt単に削除するのではなく、編集したいのはなぜですか?

4

2 に答える 2

24

最善の策は、キャッシュを削除して再作成することだと思います。実際、ソースを移動する必要がある場合は、さらに進んでビルドツリー全体を削除する傾向がありますが、これはおそらくやり過ぎです。

CMakeCache.txtファイルは、CMake GUIを介して、または実行していることが確実な場合は手動で編集できますが、cmakeを最初から再実行する場合と比較して、通常は努力する価値がないことがわかります。CMakeの実行にかなりの時間がかかる場合(たとえばExternalProject_Add、サードパーティのリソースのダウンロードと構築を伴う可能性のあるものを使用する場合)、CMakeCache.txtを変更することをお勧めします。

この記事では、CMakeCache.txtファイルとその編集についてもう少し詳しく説明します。特にそれは言う:

キャッシュを編集する主な理由は、CMakeにJPEGなどのネイティブライブラリの場所を指定するか、ネイティブライブラリの使用を停止してソースツリー内のライブラリのバージョンを使用することです。

CMakeは、キャッシュファイル自体の既存のエントリを変更しません。CMakeLists.txtファイルが大幅に変更された場合は、関連するエントリをキャッシュファイルから削除する必要があります。キャッシュファイルをまだ手動で編集していない場合は、CMakeを再実行する前にキャッシュファイルを削除することができます。

于 2013-01-22T13:04:04.217 に答える
0

CGALコード(以前にコンパイル済み)を実行しているときに同じエラーが発生しました。新しいディレクトリを作成し、そこに「.cpp」ファイルをコピーして「CGAL_create_CMakelists」を実行してから、cmakeコマンドを実行するだけでした。このように機能しました。正確にはわかりませんが、すでにコンパイルされていて、ビルドファイルがすでにフォルダーにあるコードを実行するとエラーが発生すると思います(以前のコンパイルのため)。

于 2015-08-25T10:59:43.710 に答える