cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码

标签 cmake external-project

git 命令理解的 URL 可以是 HTTPS 或 SSH 格式。
在 CMake 中,使用 ExternalProject_Add对于指定的 GIT_REPOSITORY可以使用 git 命令理解的任何 URL。
必须提供使用 HTTPS 用户凭据才能“克隆”私有(private)存储库。对于 ExternalProject_Add ,这种机制以HTTP_USERNAME的形式存在和 HTTP_PASSWORD使用时 DOWNLOAD_COMMAND .
对于 GIT_REPOSITORY好像没有这样的方法。使用时:

include( ExternalProject )

ExternalProject_Add(test
    GIT_REPOSITORY git@github.com:myuser/myprivaterepo.git
    GIT_REMOTE_NAME origin
)
在私有(private)存储库上,给出以下错误:
fatal: could not read Username for 'https://github.com': No such device or address

如何让 CMake 请求 GIT_REPOSITORY 的密码当使用 HTTPS 连接到 ExternalProject_Add 上的私有(private)存储库时?

最佳答案

虽然 CMake 不提供用于提供用户凭据的显式 Git 选项(如 HTTP_USERNAMEHTTP_PASSWORD),但您可以操作 Git URL,以便提示您输入登录密码,如 here 所述。 .只需指定您的 username@在网址中:

ExternalProject_Add(test
    GIT_REPOSITORY https://username@github.com/myuser/myprivaterepo.git
    GIT_REMOTE_NAME origin
    USES_TERMINAL_DOWNLOAD ON 
)
请注意,您可能还需要启用 USES_TERMINAL_DOWNLOAD允许终端输入以输入您的凭据的选项。您也可以直接在 URL 中提供密码,但最佳实践不建议这样做:
ExternalProject_Add(test
    GIT_REPOSITORY https://username:password@github.com/myuser/myprivaterepo.git
    GIT_REMOTE_NAME origin
    USES_TERMINAL_DOWNLOAD ON 
)
作为奖励,这也适用于 Bitbucket 帐户。

关于cmake - 如何使用 HTTPS URL 请求 GIT_REPOSITORY 的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56935202/

相关文章:

git - `docker build` 根据安装顺序挂起

c++ - CMake/Ninja 试图编译已删除的 `.cpp` 文件

c++ - 使用 CMake 安装时永久存储环境变量

cmake - 如何让ExternalProject_Add下载库?

macos - cmake:为Mac OS X应用设置图标

linux - 我如何告诉 cmake 我希望我的项目静态链接库?

cmake - 如何进行并行 CMake ExternalProject 构建

cmake - ExternalProject_Add 不安装项目的 Release 配置

cmake - ExternalProject_Add() 完成下载后如何使用 add_subdirectory()?

cmake - 如何以跨平台的方式使用 CMake ExternalProject_Add 或替代品?