复现已有算法
This commit is contained in:
+77
@@ -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] 第三方库检查完成 ✅"
|
||||
Reference in New Issue
Block a user