通过更改cmake的源码实现使用代理的下载命令

一些使用cmake构建的项目,使用file(download)

 

file(download)

命令拉取网上资源构建,通过查询资料,可以通过设置系统环境变量指定cmake使用的crul使用代理,该crul是在项目源码上编译嵌入的,而非外部shell调用.如果设置的代理不生效,则需要更改源码实现.

0.具有vs ide环境

1.上cmake官网下载源码

2.使用cmake构建cmake,并生成vs项目

3.找到cmake-3.18.4\cmake-3.18.4\Source\cmFileCommand.cxx

其中cmake-3.18.4\cmake-3.18.4需要更改为自己的版本

找到以下函数添加注释标注的代码即可

 

bool HandleDownloadCommand(std::vector<std::string> const& args,
                           cmExecutionStatus& status)
{
.......

  cURLEasyGuard g_curl(curl);
  ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
  check_curl_result(res, "DOWNLOAD cannot set url: ");


  ///
  curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:port");
  curl_easy_setopt(curl, CURLOPT_HTTPPROXYTUNNEL, 1L);
  ///


.......

更改端口

 

  因为cmake的下载命令是属于阻塞的命令,cmake会把这里阻塞的函数异步化,提早返回,同时会先建立文件,该文件长度大小为0,然后在下载数据,如果出现一些情况,比如crul的异常状态,构建脚本与cmake没有识别,而继续往下执行,则会出现后续的处理脚本出现上下文对不上的错误,例如找不到函数,使用未知函数.

  另一方面,如果设置代理不通,或者对一部分,一些文件的链接不同也会出现上述的错误.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值