我正在尝试构建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穿山甲的需求版本。
版本:
我正在尝试在Visual Studio 2017中直接在Windows 10上构建Pangolin。Pangolin的CMake涉及以下命令:ExternalProject_Add(__glew PREFIX“ $ {CMAKE_CURRENT_BINARY_DIR} / ...
我能够通过从普通命令提示符而不是git bash运行cmake来解决此问题。好像git bash会产生非ascii路径,这会导致某些git命令失败。 (请参见https://stackoverflow.com/a/58192041-希望在git 2.24中得到修复)