如果在移动源目录后重新执行CMake,则会出现如下错误:
CMake错误:当前CMakeCache.txt目录/new-path/CMakeCache.txt与创建CMakeCache.txt的目录/ old-path不同。这可能导致在错误的位置创建二进制文件。如果您不确定,请重新编辑CMakeCache.txt
处理这个问题的最佳方法是什么?似乎删除缓存工作。我为什么要编辑 CMakeCache.txt
,而不仅仅是删除它?
如果在移动源目录后重新执行CMake,则会出现如下错误:
CMake错误:当前CMakeCache.txt目录/new-path/CMakeCache.txt与创建CMakeCache.txt的目录/ old-path不同。这可能导致在错误的位置创建二进制文件。如果您不确定,请重新编辑CMakeCache.txt
处理这个问题的最佳方法是什么?似乎删除缓存工作。我为什么要编辑 CMakeCache.txt
,而不仅仅是删除它?
我认为你最好的选择是删除缓存并重新创建它。事实上,如果我需要移动源代码,我倾向于进一步删除整个构建树,但这可能是过度的。
CMakeCache.txt文件 能够 如果您确定自己在做什么,可以通过CMake GUI或手工编辑,但我发现与从头开始重新运行cmake相比,这通常不值得。我想如果运行CMake需要花费大量时间(例如,如果你使用的话) ExternalProject_Add
这可能涉及下载和构建第三方资源),最好修改CMakeCache.txt。
本文 提供有关CMakeCache.txt文件的更多细节并进行编辑。特别是它说:
编辑缓存的主要原因是为CMake提供JPEG等本机库的位置,或者阻止它使用本机库并在源树中使用该库的版本。
CMake不会改变缓存文件本身的现有条目。如果您的CMakeLists.txt文件发生显着变化,则需要从缓存文件中删除相关条目。如果您尚未手动编辑缓存文件,则可以在重新运行CMake之前将其删除。
我在运行CGAL代码时遇到了同样的错误(我之前已经编译过了)。我所做的只是创建一个新目录并在那里复制“.cpp”文件并运行“CGAL_create_CMakelists”然后运行cmake命令。它以这种方式工作。我不确切知道,但我认为当你运行已编译的代码并且其构建文件已经在文件夹中时(由于之前的编译),错误就会出现。