如果在移动源目录后重新执行CMake,则会出现如下错误:
CMake错误:当前的CMakeCache.txt目录/new-path/CMakeCache.txt与创建CMakeCache.txt的目录/ old-path不同。这可能导致在错误的位置创建二进制文件。如果您不确定,请重新编辑CMakeCache.txt
处理此问题的最佳方法是什么?似乎删除缓存工作。为什么我要编辑CMakeCache.txt
,而不是仅删除它?
答案 0 :(得分:17)
我认为最好的办法是删除缓存并重新创建缓存。事实上,如果我需要移动源代码,我倾向于进一步删除整个构建树,但这可能有点过头了。
如果您确定自己在做什么,可以通过CMake GUI或手动编辑CMakeCache.txt文件 ,但我发现与重新运行相比,通常不值得付出努力从零开始。我想如果运行CMake需要花费大量时间(例如,如果您使用ExternalProject_Add
可能涉及下载和构建第三方资源),则最好修改CMakeCache.txt。
This article提供了有关CMakeCache.txt文件的更多细节并进行了编辑。特别是它说:
编辑缓存的主要原因是为CMake提供JPEG等本机库的位置,或者阻止它使用本机库并在源代码树中使用该库的版本。
CMake不会改变缓存文件本身的现有条目。如果您的CMakeLists.txt文件发生显着变化,则需要从缓存文件中删除相关条目。如果您尚未手动编辑缓存文件,则可以在重新运行CMake之前将其删除。