#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" DOWNLOAD_DIR="$ROOT_DIR/downloads" TOOLS_DIR="$ROOT_DIR/tools" MICROMAMBA_DIR="$TOOLS_DIR/micromamba" MICROMAMBA_BIN="$MICROMAMBA_DIR/bin/micromamba" ENV_DIR="$TOOLS_DIR/linux-build-env" mkdir -p "$DOWNLOAD_DIR" "$TOOLS_DIR" "$MICROMAMBA_DIR" if [[ ! -x "$MICROMAMBA_BIN" ]]; then echo "[setup] 下载 Linux micromamba 二进制包..." ARCHIVE="$DOWNLOAD_DIR/micromamba-linux-64.tar.bz2" curl -L --fail -o "$ARCHIVE" "https://micro.mamba.pm/api/micromamba/linux-64/latest" tar -xjf "$ARCHIVE" -C "$MICROMAMBA_DIR" bin/micromamba fi if [[ ! -x "$ENV_DIR/bin/cmake" || ! -x "$ENV_DIR/bin/ninja" || ! -x "$ENV_DIR/bin/clang++" ]]; then echo "[setup] 在项目目录内创建 Linux 二进制构建环境..." "$MICROMAMBA_BIN" create -y -p "$ENV_DIR" -c conda-forge \ cmake ninja clangxx qt-main opencv pkg-config fi # README 中约定的路径,使用软链接指向隔离环境,便于 CMake 查找。 ln -sfn "linux-build-env" "$TOOLS_DIR/compiler-linux" ln -sfn "linux-build-env" "$TOOLS_DIR/cmake-linux" ln -sfn "linux-build-env" "$TOOLS_DIR/ninja-linux" ln -sfn "linux-build-env" "$TOOLS_DIR/python-bin" ln -sfn "linux-build-env" "$TOOLS_DIR/python-venv" ln -sfn "../tools/linux-build-env" "$ROOT_DIR/third_party/qt-linux" ln -sfn "../tools/linux-build-env" "$ROOT_DIR/third_party/opencv-linux" echo "[setup] 完成。所有 Linux 构建工具位于:$ENV_DIR"