【问题标题】:Editing versus deleting CMakeCache.txt after moving directory移动目录后编辑与删除 CMakeCache.txt
【发布时间】:2013-01-05 16:45:13
【问题描述】:

如果源目录移动后重新执行CMake,会报如下错误:

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

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

【问题讨论】:

标签: cmake


【解决方案1】:

我在运行 CGAL 代码时遇到了同样的错误(我之前已经编译过)。我所做的只是创建一个新目录并在那里复制“.cpp”文件并运行“CGAL_create_CMakelists”,然后运行 ​​cmake 命令。它以这种方式工作。我不完全知道,但我认为当您运行已编译且其构建文件已在文件夹中的代码时会出现错误(由于先前的编译)。

【讨论】:

    【解决方案2】:

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

    CMakeCache.txt 文件可以通过 CMake GUI 进行编辑,如果您确定自己在做什么,则可以手动编辑,但我发现与重新运行相比,这通常不值得付出努力cmake 从头开始​​。我猜如果运行 CMake 需要大量时间(例如,如果您使用 ExternalProject_Add,这可能涉及下载和构建第三方资源),最好修改 CMakeCache.txt。

    This article 提供了有关 CMakeCache.txt 文件和编辑它的更多详细信息。特别是它说:

    编辑缓存的主要原因是为 CMake 提供原生库(如 JPEG)的位置,或者阻止它使用原生库并使用源代码树中的某个版本的库。

    CMake 不会更改缓存文件本身中的现有条目。如果您的 CMakeLists.txt 文件发生重大变化,您将需要从缓存文件中删除相关条目。如果您尚未手动编辑缓存文件,则可以在重新运行 CMake 之前将其删除。

    【讨论】:

    • 我尝试使用以下命令清除缓存:rm -rf ~/.cache/*,但错误仍然存​​在。我哪里错了?
    猜你喜欢
    • 1970-01-01
    • 2022-11-18
    • 2021-03-07
    • 1970-01-01
    • 2013-03-15
    • 2019-04-08
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多