问题 移动目录后编辑与删除CMakeCache.txt


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

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

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


864
2018-01-22 12:41


起源

unix.stackexchange.com/questions/66480/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


答案:


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

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

本文 提供有关CMakeCache.txt文件的更多细节并进行编辑。特别是它说:

编辑缓存的主要原因是为CMake提供JPEG等本机库的位置,或者阻止它使用本机库并在源树中使用该库的版本。

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


15
2018-01-22 13:04



我尝试使用此命令清除缓存: rm -rf ~/.cache/* 但错误仍然存​​在。我哪里错了? - jAYANT YADAV


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


0
2017-08-25 10:59