70 lines
1.6 KiB
Bash
70 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
TARGET="cloud-front-test"
|
|
SRC_DIR="./cloudfront/code"
|
|
LIB_DIR="./cloudfront/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 \
|
|
./client2.cpp \
|
|
./dealMsg.cpp \
|
|
./main_thread.cpp \
|
|
./PQSMsg.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 \
|
|
-I./lib/libuv-v1.51.0/include \
|
|
-I. "
|
|
|
|
LIB_DIRS="-L$LIB_DIR -L/usr/lib64 -L/usr/local/lib"
|
|
|
|
LIBS="./cloudfront/lib/libcurl.so \
|
|
./cloudfront/lib/libssl.so \
|
|
./cloudfront/lib/libcrypto.so \
|
|
./cloudfront/lib/liblog4cplus.so \
|
|
-lpthread -ldl -lrt \
|
|
-lstdc++fs \
|
|
-lz \
|
|
./libuv.a \
|
|
-pthread"
|
|
|
|
# 如果有静态 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 -Wl,-rpath='$ORIGIN/../cloudfront/lib' -o "$OUT_DIR/$TARGET"
|
|
|
|
# 编译结果检查
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ 编译成功,生成可执行文件: $OUT_DIR/$TARGET"
|
|
echo "🔍 依赖库检查:"
|
|
ldd "$OUT_DIR/$TARGET" || echo "是静态编译程序 ✔"
|
|
else
|
|
echo "❌ 编译失败"
|
|
fi |