25

如果在移动源目录后重新执行 CMake,则会出现如下错误:

CMake 错误:当前 CMakeCache.txt 目录 /new-path/CMakeCache.txt 与创建 CMakeCache.txt 的目录 /old-path 不同。这可能会导致在错误的位置创建二进制文件。如果不确定,请重新编辑 CMakeCache.txt

处理这个问题的最佳方法是什么?似乎删除缓存有效。为什么我想编辑CMakeCache.txt而不是删除它?

4

2 回答 2

24

我认为您最好的选择确实是删除缓存并重新创建它。事实上,如果我需要移动源,我倾向于更进一步并删除整个构建树,但这可能是矫枉过正。

可以通过 CMake GUI 或手动编辑CMakeCache.txt 文件,如果您确定自己在做什么,但我发现与从头开始重新运行 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 回答