CMakeLists中下载github仓库代码和设置代理

在编译大型项目时,往往会遇到在CMakeLists.txt文件中下载github依赖仓库的现象。

include(FetchContent)

FetchContent_Declare(
  repo-common
  GIT_REPOSITORY https://github.com/triton-inference-server/common.git
  GIT_TAG ${TRITON_COMMON_REPO_TAG}
  GIT_SHALLOW ON)
FetchContent_Declare(
  repo-core
  GIT_REPOSITORY https://github.com/triton-inference-server/core.git
  GIT_TAG ${TRITON_CORE_REPO_TAG}
  GIT_SHALLOW ON)
FetchContent_Declare(
  repo-backend
  GIT_REPOSITORY https://github.com/triton-inference-server/backend.git
  GIT_TAG ${TRITON_BACKEND_REPO_TAG}
  GIT_SHALLOW ON)
FetchContent_MakeAvailable(repo-common repo-core repo-backend)

但是因为墙的原因,直接下载不了代码导致编译报错。

可以通过设置代理解决。

set(ENV{http_proxy} "http://127.0.0.1:8082")
set(ENV{https_proxy} "http://127.0.0.1:8082")

但是如果你是在docker中编译时,情况又会变得复杂,设置代理会报”Failed to connect to 127.0.0.1 port 8082 after 0 ms: Connection refused“,不设置的话又连接不到github。解决方案是在docker build 加--network host,使用宿主机的网络。

#执行以下dockerfile:docker build -f dockerfile -t tritonserver:temp .
ARG BASE_IMAGE=nvcr.io/nvidia/tritonserver
ARG BASE_TAG=23.10-py3

FROM ${BASE_IMAGE}:${BASE_TAG} as base

COPY cmake-3.24.4-linux-x86_64.tar.gz /tmp/
COPY install_cmake.sh /tmp/
RUN bash /tmp/install_cmake.sh && rm /tmp/install_cmake.sh
ENV PATH="/usr/local/cmake/bin:${PATH}"

WORKDIR /app
#ENV http_proxy "http://127.0.0.1:8082",在dockerfile中设置代理同样不行,报错也是一样的
#ENV https_proxy "http://127.0.0.1:8082"
COPY CMakeLists.txt CMakeLists.txt
RUN cmake .

参考链接:https://simpleapples.com/2019/04/18/building-docker-image-behind-proxy/

还有一个发现就是在dockerfile中执行

RUN export http_proxy=127.0.0.1:8082 && export https_proxy=127.0.0.1:8082

ENV http_proxy "http://127.0.0.1:8082"

ENV https_proxy "http://127.0.0.1:8082"

我猜测是生效的范围不一样,ENV对当前shell和子shell都是生效的,但是export只对当前shell生效,因为如果是在dockerfile中执行另外一个shell,另外一个shell中下载github的代码的话,export是下载不下来的,但是ENV可以。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值