0


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可以。

标签: cmake

本文转载自: https://blog.csdn.net/zhuikefeng/article/details/134851381
版权归原作者 zhuikefeng 所有, 如有侵权,请联系我们删除。

“CMakeLists中下载github仓库代码和设置代理”的评论:

还没有评论