Files
front_linux/LFtid1056/cloudfront/build.sh

60 lines
1.3 KiB
Bash
Raw Normal View History

2025-06-20 16:20:59 +08:00
#!/bin/bash
TARGET="cloud-front"
SRC_DIR="./code"
LIB_DIR="./lib"
OUT_DIR="./bin"
# 创建输出目录
mkdir -p "$OUT_DIR"
# 源文件,所有主 cpp 文件
SRC="$SRC_DIR/main.cpp \
$SRC_DIR/worker.cpp \
$SRC_DIR/log4.cpp \
$SRC_DIR/cfg_parser.cpp \
$SRC_DIR/interface.cpp \
$SRC_DIR/rocketmq.cpp \
$SRC_DIR/tinyxml2.cpp"
INCLUDE_DIRS="-I$SRC_DIR \
-I$SRC_DIR/nlohmann \
-I$SRC_DIR/curl \
-I$SRC_DIR/log4cplus \
-I$SRC_DIR/rocketmq \
-I$SRC_DIR" # tinyxml2.h 所在目录
LIB_DIRS="-L$LIB_DIR -L/usr/lib64 -L/usr/local/lib"
LIBS="-lcurl -lssl -lcrypto \
-lpthread -ldl -lrt \
-llog4cplus \
-lstdc++fs \
-lz"
# 如果有静态 rocketmq 库就加上
if [ -f "$LIB_DIR/librocketmq.a" ]; then
LIBS="$LIB_DIR/librocketmq.a $LIBS"
fi
# 判断是否为 debug 版本
if [[ "$1" == "debug" ]]; then
CXXFLAGS="-std=c++11 -g -O0"
TARGET="${TARGET}d"
echo "🟢 编译调试版本 (-g -O0)"
else
CXXFLAGS="-std=c++11 -O2 -static-libstdc++ -static-libgcc"
echo "🔵 编译正式版本 (-O2 -static)"
fi
# 编译命令
g++ $CXXFLAGS $SRC $INCLUDE_DIRS $LIB_DIRS $LIBS -o "$OUT_DIR/$TARGET"
# 编译结果检查
if [ $? -eq 0 ]; then
echo "✅ 编译成功,生成可执行文件: $OUT_DIR/$TARGET"
echo "🔍 依赖库检查:"
ldd "$OUT_DIR/$TARGET" || echo "是静态编译程序 ✔"
else
echo "❌ 编译失败"
fi