编译 ubuntu2004
读前须知
INFO
- dds 使用了 docker 镜像以此来提供一个统一的编译环境,因此仅需确保宿主机安装了最新版本的 docker 工具即可无障碍构建 dds 的所有内容
- 本文中所提及的 "编译 ubuntu2004" 指的是编译适用于 "ubuntu2004" 的产物,与宿主机无关
- 本文中的构建环境以 gcr.minieye.tech/huangjian/dds/build_tools/aio:20.04 为准
安装环境
dds 提供了容器化的标准构建环境,因此,在开始编译之前,请先确保你的设备安装了 docker
同时,您还需要确保您的网络通畅,bazel
构建中可能会通过网络拉取最新版依赖
拉取镜像
拉取镜像之前,需要登录仓库
sh
# 请确保你有 https://git.minieye.tech/huangjian/dds 仓库的访问权限
# 请更换 <username> 为你的 gitlab 仓库用户名
docker login -u "username" gcr.minieye.tech
登录成功以后就可以拉取镜像了
sh
docker pull gcr.minieye.tech/huangjian/dds/build_tools/aio:20.04
执行构建
构建 dds 时,需要将 aiplorer 整个仓库挂载到容器的 /workspace
路径
sh
docker run --rm -it \
-v /path/to/aiplorer:/workspace \
-v /path/to/preload:/preload \
-v /path/to/output:/output \
-e OUTPUT_DIR=/output \
-e BAZEL_PRELOAD_ROOT=/preload \
gcr.minieye.tech/huangjian/dds/build_tools/aio:20.04 bash ./common/dds/scripts/build.sh local
构建完成以后,产物将被释放到 OUTPUT_DIR
指定的路径中
环境变量
我们可以通过设定不同的环境变量以使 dds 执行不同的构建策略,以下是 dds 构建过程中可以设置的环境变量:
变量名 | 说明 | 是否必选 |
---|---|---|
OUTPUT_DIR | 产物的输出路径 | 是 |
BUILD_JOBS | 并行编译数量,默认为 CPU 核心数量 | 否 |
BAZEL_PRELOAD_ROOT | DDS 构建所需要的依赖项,若不指定则会在构建时自动下载 | 否 |
COMPILATION_MODE | 编译模式,默认fastbuild, 还有 opt 和 dbg 可选 | 否 |
TOOLCHAIN_HOME | 工具链路径,跨平台构建时必须指定 | 否 |
BAZEL_PRELOAD_ROOT | bazel 依赖缓存路径,优先从本地获取依赖,若不存在则自动从云端下载 | 否 |
DISABLE_REMOTE_CACHE | 是否禁用bazel 的远程缓存功能,TRUE 表示禁用 | 否 |
REMOTE_CACHE_URL | bazel remote cache 的地址,若不指定会使用默认值 | 否 |