复现已有算法

This commit is contained in:
cloud
2026-07-14 15:43:18 +08:00
parent abebd2a683
commit 50b8111fd9
860 changed files with 182250 additions and 18 deletions
+77
View File
@@ -0,0 +1,77 @@
#!/bin/bash
# ===================== 第三方库自动编译(Drogon =====================
# 检查 Drogon + Trantor 编译产物,缺失时自动从 drogon_repo 源码编译。
# 仅在编译产物不存在时触发,日常开发零开销。
#
# 参考: edge_collector/collector/ensure_third_party.sh
# 用法:
# source ensure_third_party.sh # 被 build.sh / run.sh 引用
# bash ensure_third_party.sh # 也可独立运行
set -euo pipefail
# 如果变量已由调用方设置则复用,否则自行推导
SCRIPT_DIR="${SCRIPT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}"
THIRD_PARTY="${THIRD_PARTY:-${SCRIPT_DIR}}"
# ---- 架构检测 ----
if [ -z "${TARGET_ARCH:-}" ]; then
ARCH=$(uname -m)
case "${ARCH}" in
x86_64) TARGET_ARCH="x64" ;;
aarch64|arm64) TARGET_ARCH="arm64" ;;
armv7*|arm) TARGET_ARCH="arm32" ;;
*) TARGET_ARCH="x64" ;;
esac
fi
export TARGET_ARCH
export DROGON_INSTALL="${THIRD_PARTY}/drogon/install/${TARGET_ARCH}"
# --- Drogon + Trantor (本地安装) ---
# Drogon 使用 find_package(CONFIG) 模式,需要完整 cmake install 树。
# 编译后安装到 third_party/drogon/install/${TARGET_ARCH}/
# 由顶层 CMakeLists.txt 通过 CMAKE_PREFIX_PATH 注入查找路径。
DROGON_REPO="${THIRD_PARTY}/drogon_repo"
DROGON_CONFIG="${DROGON_INSTALL}/libs/cmake/Drogon/DrogonConfig.cmake"
if [ -f "${DROGON_CONFIG}" ]; then
echo "[third_party] Drogon 已编译,跳过 (${DROGON_INSTALL})"
else
if [ ! -f "${DROGON_REPO}/CMakeLists.txt" ]; then
echo "[third_party] ⚠️ 源码目录不存在: drogon_repo,跳过 Drogon"
echo "[third_party] (后续 cmake find_package(Drogon) 将报错)"
return 0 2>/dev/null || exit 0
elif [ ! -f "${DROGON_REPO}/trantor/CMakeLists.txt" ]; then
echo "[third_party] ⚠️ Trantor 源码未就位: drogon_repo/trantor/,跳过 Drogon"
echo "[third_party] (后续 cmake find_package(Drogon) 将报错)"
return 0 2>/dev/null || exit 0
else
echo "[third_party] 编译 Drogon + Trantor (产物缺失) → ${DROGON_INSTALL}"
DROGON_BUILD="${DROGON_REPO}/build"
rm -rf "${DROGON_BUILD}"
mkdir -p "${DROGON_BUILD}"
cmake -S "${DROGON_REPO}" -B "${DROGON_BUILD}" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${DROGON_INSTALL}" \
-DCMAKE_INSTALL_LIBDIR=libs \
-DBUILD_SHARED_LIBS=ON \
-DUSE_SUBMODULE=ON \
-DBUILD_CTL=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_ORM=OFF \
-DBUILD_TESTING=OFF \
-DBUILD_BROTLI=ON \
-DBUILD_YAML_CONFIG=OFF
cmake --build "${DROGON_BUILD}" -j"$(nproc)"
cmake --install "${DROGON_BUILD}"
rm -rf "${DROGON_BUILD}"
echo "[third_party] ✅ Drogon + Trantor → ${DROGON_INSTALL}"
fi
fi
echo "[third_party] 第三方库检查完成 ✅"