Git配置SSH后CMake FetchContent克隆仓库失败求助
解决CMake FetchContent无法克隆GitHub仓库的问题
问题背景
Ubuntu 22.04系统,搭配CMake 3.22.1与Git 2.34.1,已完成GitHub SSH验证配置,手动执行git clone可正常克隆任意仓库,但CMake的FetchContent模块无法完成克隆操作,尝试HTTPS、git://两种仓库地址均失败。
解决方案
1. 直接改用SSH仓库地址
将CMakeLists.txt中的仓库地址替换为SSH格式,复用已验证的SSH配置:
cmake_minimum_required(VERSION 3.22) project(TestSFML) include(FetchContent) FetchContent_Declare(SFML GIT_REPOSITORY git@github.com:SFML/SFML.git GIT_TAG 2.6.1 FIND_PACKAGE_ARGS COMPONENTS system window graphics network audio ) FetchContent_MakeAvailable(SFML)
2. 强制Git自动转换协议
全局配置Git,将GitHub的HTTPS/git://请求自动转为SSH协议,无需修改CMake配置:
git config --global url."git@github.com:".insteadOf "https://github.com/" git config --global url."git@github.com:".insteadOf "git://github.com/"
配置完成后,CMake即使使用原有HTTPS地址,也会通过SSH完成克隆。
3. 指定CMake使用的Git路径
若CMake调用的Git版本与终端使用的不一致(比如处于conda环境时),显式指定系统Git的路径:
cmake .. -DCMAKE_GIT_COMMAND=/usr/bin/git
4. 清理缓存重建项目
删除旧的build目录,避免缓存的错误状态干扰克隆流程:
rm -rf build && mkdir build && cd build && cmake ..
5. 排查具体错误原因
查看CMake生成的克隆脚本,手动执行脚本中的命令获取详细错误信息:
cat /home/kyle/Downloads/build/sfml-subbuild/sfml-populate-prefix/tmp/sfml-populate-gitclone.cmake
复制脚本内的git clone命令在终端执行,可定位具体问题(如网络超时、SSL证书异常等)。
内容的提问来源于stack exchange,提问作者K. Shores
相关产品推荐
相关产品推荐

