如何使CMake的ExternalProject_Add在Visual Studio中工作(git-submodule问题?)>

问题描述 投票:1回答:1

我正在尝试构建Pangolin以直接在Visual Studio 2017的Windows 10上构建。穿山甲的CMake涉及以下命令:

ExternalProject_Add( __glew
  PREFIX "${CMAKE_CURRENT_BINARY_DIR}/glew"
  GIT_REPOSITORY https://github.com/Perlmint/glew-cmake.git
  GIT_TAG 7574ab4d00b683e56adbfdec7da636529dfe65d8
  INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
             -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
             -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
             -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
             -DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL}
             -DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO}
)

运行此代码时,出现以下错误:

fatal: 'submodule' appears to be a git command, but we were not
able to execute it. Maybe git-submodule is broken?

我的分析表明,这是在执行以下生成的CMake代码(来自build-dir/external/glew/tmp/__glew-gitclone.cmake)时发生的:

execute_process(
  COMMAND "C:/Program Files/Git/mingw64/bin/git.exe"  submodule update --recursive --init 
  WORKING_DIRECTORY "C:/Users/scrambledusername/Garage/Pangolin/build/external/glew/src/__glew"
  RESULT_VARIABLE error_code
  )
if(error_code)
  message(FATAL_ERROR "Failed to update submodules in: 'C:/Users/scrambledusername/Garage/Pangolin/build/external/glew/src/__glew'")
endif()

换句话说,命令git submodule update --recursive --init导致错误。但是,通过Git Bash手动运行时不会导致错误。

一些research(在相关提交中也为here,并且here)显示这可能与git路径或带有git-submodule脚本的路径(对我来说是C:\Program Files\Git\mingw64\libexec\git-core)有关系统路径。将它们放在系统路径(对于系统OR用户)之前不会影响结果(重新启动系统,VS只是为了确保已注册新路径)。我还尽力确保脚本文件本身对任何用户都具有运行许可权(对此有何警告?)。

从cmd复制/粘贴:

C:\WINDOWS\system32>echo %PATH%
C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\mingw64\libexec\git-core;C\Program Files\...

有人知道如何使它正常工作或有任何建议吗?

当前解决方法:在CMake中设置BUILD_EXTERN_GLEW=OFF,然后根据其CMake手动检出并构建GLEW穿山甲的需求版本。

版本:

  • git 2.23.0.windows.1
  • VisualStudio社区2017 15.9.16
  • CMake 3.15.3
  • [Pangolin 25159034e62011b3527228e476cec51f08e87602(在撰写本文时向专家提交的最新承诺)] >>
  • 我正在尝试在Visual Studio 2017中直接在Windows 10上构建Pangolin。Pangolin的CMake涉及以下命令:ExternalProject_Add(__glew PREFIX“ $ {CMAKE_CURRENT_BINARY_DIR} / ...

git cmake visual-studio-2017 git-submodules
1个回答
0
投票

我能够通过从普通命令提示符而不是git bash运行cmake来解决此问题。好像git bash会产生非ascii路径,这会导致某些git命令失败。 (请参见https://stackoverflow.com/a/58192041-希望在git 2.24中得到修复)

© www.soinside.com 2019 - 2024. All rights reserved.