CMake无法检测到Git版本

5
当我运行cmake(为了在Windows上构建TensorFlow)时,我收到错误消息。
CMake Error at C:/Program Files/CMake/share/cmake-3.8/Modules/ExternalProject.cmake:1811 (message):
  error: git version 1.6.5 or later required for 'git submodule update
  --recursive': GIT_VERSION_STRING=''

ExternalProject.cmake 的 1810-1812 行中,我有以下这些代码:

    if(GIT_VERSION_STRING VERSION_LESS 1.6.5)
      message(FATAL_ERROR "error: git version 1.6.5 or later required for 'git submodule update --recursive': GIT_VERSION_STRING='${GIT_VERSION_STRING}'")
    endif()

但是我看不到GIT_VERSION_STRING赋值的地方。无论如何,似乎 GIT_VERSION_STRING 未被赋值或被赋了空字符串或类似的东西。这导致CMake无法检测到我的Git版本。

我安装了Git并且git --version命令可以正确输出版本信息。

git version 2.12.2.windows.2

有人知道如何解决这个错误吗?


你能展示一下 C:/Program Files/CMake/share/cmake-3.8/Modules/ExternalProject.cmake:1811 的内容吗?同时,你能提供触发该调用的cmake代码吗? - Antonio
请确保已找到适当的 git:检查 CMake 缓存中的 GIT_EXECUTABLE 变量。 - Tsyvarev
@Tsyvarev:CMake缓存是什么?我如何在其中检查变量? - HelloGoodbye
@Tsyvarev:在构建目录中有一个CMakeCache.txt文件,其中GIT_EXECUTABLE:FILEPATH设置为一个不存在的路径。是否有一种方法可以全局重置此变量(或者整个缓存)? - HelloGoodbye
1
要重置此变量,请从“CMakeCache.txt”中删除有关它的记录。要重置整个缓存,请删除整个文件。 - Tsyvarev
@Tsyvarev:我删除了 CMakeCache.txt,现在我没有收到相同的错误信息,这很好。但是第一次运行命令时该文件并不存在,但我还是遇到了错误。为什么?我该如何确保不再出现这个错误? - HelloGoodbye
2个回答

5
在我运行cmake的文件夹中的CMakeCache.txt文件中,有一个名为GIT_EXECUTABLE:FILEPATH的变量,由于某些原因它指向了错误的路径(我已经安装了Git但不在那个文件夹中)。所以我按照Tsyvarev的建议删除了CMakeCache.txt并重新运行了cmake,第二次运行后问题就解决了。
我不明白的是为什么我第一次运行cmake时会将GIT_EXECUTABLE:FILEPATH分配给一个错误的路径,而第二次没有。那个错误的路径是从哪里来的?为什么我只有第一次运行cmake时才遇到这个问题,第二次没有?

1

请指定GIT_EXECUTABLE的路径到您的git。

看起来cmake默认从IDE中获取git。Visual Studio和Xcode也提供git二进制文件,这是cmake首选的,可能会导致版本不匹配的错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接