BestCDN/build_cpp.sh
2025-07-26 12:59:57 +08:00

89 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# BestCDN C++ Build Script
echo "BestCDN C++ High-Performance Tester Build Script"
echo "================================================"
# Check if we're on Linux
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
echo "Detected Linux system"
# Check if dependencies are installed
if ! pkg-config --exists libcurl; then
echo "Installing dependencies..."
if command -v apt-get &> /dev/null; then
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev libjsoncpp-dev build-essential pkg-config
elif command -v yum &> /dev/null; then
sudo yum install -y libcurl-devel jsoncpp-devel gcc-c++ make pkgconfig
elif command -v dnf &> /dev/null; then
sudo dnf install -y libcurl-devel jsoncpp-devel gcc-c++ make pkgconfig
else
echo "Error: Package manager not found. Please install libcurl-dev and libjsoncpp-dev manually."
exit 1
fi
fi
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "Detected macOS system"
# Check if Homebrew is installed
if ! command -v brew &> /dev/null; then
echo "Error: Homebrew not found. Please install Homebrew first."
exit 1
fi
# Install dependencies
echo "Installing dependencies..."
brew install curl jsoncpp pkg-config
else
echo "Unsupported operating system: $OSTYPE"
exit 1
fi
# Create results directory
echo "Creating results directory..."
mkdir -p results
# Build the C++ tester
echo "Building C++ tester..."
cd src/cpp
# Use pkg-config to get proper flags
if pkg-config --exists libcurl; then
CURL_FLAGS=$(pkg-config --cflags --libs libcurl)
else
CURL_FLAGS="-lcurl"
fi
if pkg-config --exists jsoncpp; then
JSONCPP_FLAGS=$(pkg-config --cflags --libs jsoncpp)
else
JSONCPP_FLAGS="-ljsoncpp"
fi
echo "Building with flags: $CURL_FLAGS $JSONCPP_FLAGS"
g++ -std=c++17 -O3 -Wall -Wextra -pthread \
bestcdn_tester.cpp \
$CURL_FLAGS $JSONCPP_FLAGS \
-o bestcdn_tester
if [ $? -eq 0 ]; then
echo "✓ Build successful!"
echo ""
echo "To run the C++ tester:"
echo " cd src/cpp"
echo " ./bestcdn_tester"
echo ""
echo "Make sure your IP lists are in the ip_lists/ directory:"
echo " - ip_lists/cloudflare.txt"
echo " - ip_lists/fastly.txt"
echo " - ip_lists/edgeone.txt"
echo " - ip_lists/esa.txt"
else
echo "✗ Build failed!"
exit 1
fi