#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ENV_DIR="$ROOT_DIR/tools/linux-build-env" BUILD_DIR="$ROOT_DIR/build-linux" if [[ ! -x "$ENV_DIR/bin/cmake" || ! -x "$ENV_DIR/bin/ninja" || ! -x "$ENV_DIR/bin/clang++" ]]; then echo "[build] 未发现项目内 Linux 二进制构建环境,先执行 setup-linux-binary-deps.sh" "$ROOT_DIR/scripts/setup-linux-binary-deps.sh" fi export PATH="$ENV_DIR/bin:$PATH" export CMAKE_PREFIX_PATH="$ENV_DIR" export PKG_CONFIG_PATH="$ENV_DIR/lib/pkgconfig:$ENV_DIR/share/pkgconfig:${PKG_CONFIG_PATH:-}" export LD_LIBRARY_PATH="$ENV_DIR/lib:${LD_LIBRARY_PATH:-}" export CC="$ENV_DIR/bin/clang" export CXX="$ENV_DIR/bin/clang++" cmake -S "$ROOT_DIR" -B "$BUILD_DIR" \ -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \ -DCMAKE_C_COMPILER="$CC" \ -DCMAKE_CXX_COMPILER="$CXX" \ -DCMAKE_INSTALL_PREFIX="$ROOT_DIR/dist-linux" cmake --build "$BUILD_DIR" --parallel "$(nproc)" echo "[build] 构建完成:$BUILD_DIR/chengnan"