#!/bin/bash # RPC项目构建脚本 # 设置默认构建目录 build_dir="build" install_prefix="/usr/local" # 显示帮助信息 show_help() { echo "用法: $0 [选项]" echo "选项:" echo " --help 显示帮助信息" echo " --clean 清理构建目录" echo " --install 安装到系统目录" echo " --prefix=DIR 设置安装前缀 (默认: /usr/local)" echo " --build-dir=DIR 设置构建目录 (默认: build)" } # 处理命令行参数 for arg in "$@"; do case $arg in --help) show_help exit 0 ;; --clean) echo "清理构建目录 $build_dir..." rm -rf "$build_dir" exit 0 ;; --install) install=true shift ;; --prefix=*) install_prefix="${arg#*=}" shift ;; --build-dir=*) build_dir="${arg#*=}" shift ;; *) echo "未知选项: $arg" show_help exit 1 ;; esac done # 检查是否在Linux环境下运行 if [[ "$(uname)" != "Linux" ]]; then echo "警告: 这个脚本设计用于Linux环境,您的操作系统可能不兼容" echo "如果您在Windows上,可以尝试使用WSL或其他Linux子系统" fi # 检查是否安装了CMake if ! command -v cmake &> /dev/null; then echo "错误: CMake未安装,请先安装CMake" echo "Ubuntu/Debian: sudo apt-get install cmake" echo "CentOS/RHEL: sudo yum install cmake" exit 1 fi # 检查是否安装了GCC if ! command -v gcc &> /dev/null; then echo "错误: GCC编译器未安装,请先安装GCC" echo "Ubuntu/Debian: sudo apt-get install gcc" echo "CentOS/RHEL: sudo yum install gcc" exit 1 fi # 创建构建目录 mkdir -p "$build_dir" cd "$build_dir" # 运行CMake配置 echo "运行CMake配置..." echo "安装前缀: $install_prefix" cmake .. -DCMAKE_INSTALL_PREFIX="$install_prefix" if [ $? -ne 0 ]; then echo "CMake配置失败,请检查错误信息" exit 1 fi # 编译项目 echo "编译项目..." make -j$(nproc) if [ $? -ne 0 ]; then echo "编译失败,请检查错误信息" exit 1 fi # 安装(如果请求) if [ "$install" = true ]; then echo "安装项目到 $install_prefix..." sudo make install if [ $? -ne 0 ]; then echo "安装失败,请检查错误信息" exit 1 fi echo "安装成功!" fi # 显示成功信息 echo "构建成功! 可执行文件位于 $build_dir/bin/" echo "运行服务器: ./$build_dir/bin/rpc_server" echo "运行客户端: ./$build_dir/bin/rpc_client"