You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.6 KiB
116 lines
2.6 KiB
2 months ago
|
#!/bin/bash
|
||
|
|
||
|
# 设置项目根目录
|
||
|
PROJECT_ROOT=$(pwd)
|
||
|
|
||
|
# 设置构建目录
|
||
|
BUILD_DIR="$PROJECT_ROOT/build"
|
||
|
|
||
|
# 设置生成的可执行文件路径和目标软链接路径
|
||
|
EXECUTABLE_PATH="$BUILD_DIR/App/console_pytorch/ISG_console_pytorch"
|
||
|
TARGET_LINK="/usr/myapp/ISG"
|
||
|
|
||
|
# 日志函数(带颜色)
|
||
|
log_info() {
|
||
|
echo -e "\033[32m[INFO]\033[0m $1"
|
||
|
}
|
||
|
|
||
|
log_error() {
|
||
|
echo -e "\033[31m[ERROR]\033[0m $1"
|
||
|
}
|
||
|
|
||
|
log_warning() {
|
||
|
echo -e "\033[33m[WARNING]\033[0m $1"
|
||
|
}
|
||
|
|
||
|
# 动态判断是否需要 sudo
|
||
|
if [ "$EUID" -ne 0 ]; then
|
||
|
SUDO="sudo"
|
||
|
else
|
||
|
SUDO=""
|
||
|
fi
|
||
|
|
||
|
# 清理构建目录
|
||
|
clean_build() {
|
||
|
if [ -d "$BUILD_DIR" ]; then
|
||
|
log_info "清理旧的构建目录..."
|
||
|
rm -rf "$BUILD_DIR"
|
||
|
else
|
||
|
log_warning "构建目录不存在,无需清理。"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# 创建构建目录
|
||
|
create_build_dir() {
|
||
|
log_info "创建新的构建目录..."
|
||
|
mkdir -p "$BUILD_DIR"
|
||
|
}
|
||
|
|
||
|
# 执行 CMake 配置
|
||
|
run_cmake() {
|
||
|
log_info "运行 CMake 配置..."
|
||
|
cd "$BUILD_DIR" || { log_error "无法进入构建目录"; exit 1; }
|
||
|
cmake .. || { log_error "CMake 配置失败"; exit 1; }
|
||
|
}
|
||
|
|
||
|
# 执行 Make 构建
|
||
|
run_make() {
|
||
|
log_info "开始构建项目..."
|
||
|
make -j$(nproc) || { log_error "构建失败"; exit 1; }
|
||
|
log_info "构建完成!"
|
||
|
}
|
||
|
|
||
|
# 检查生成的可执行文件是否存在
|
||
|
check_executable_exists() {
|
||
|
if [ ! -f "$EXECUTABLE_PATH" ]; then
|
||
|
log_error "生成的可执行文件不存在: $EXECUTABLE_PATH"
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# 检查目标软链接是否存在,如果存在则删除
|
||
|
prepare_target_link() {
|
||
|
if [ -L "$TARGET_LINK" ]; then
|
||
|
log_warning "目标软链接已存在,正在删除: $TARGET_LINK"
|
||
|
$SUDO rm -f "$TARGET_LINK" || { log_error "无法删除现有软链接"; exit 1; }
|
||
|
elif [ -e "$TARGET_LINK" ]; then
|
||
|
log_error "目标路径已存在且不是软链接: $TARGET_LINK"
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# 创建软链接
|
||
|
create_symlink() {
|
||
|
log_info "正在创建软链接..."
|
||
|
$SUDO ln -s "$EXECUTABLE_PATH" "$TARGET_LINK" || { log_error "创建软链接失败"; exit 1; }
|
||
|
log_info "软链接已成功创建: $TARGET_LINK -> $EXECUTABLE_PATH"
|
||
|
}
|
||
|
|
||
|
# 主流程
|
||
|
main() {
|
||
|
log_info "开始构建流程..."
|
||
|
|
||
|
# 1. 清理旧的构建目录
|
||
|
clean_build
|
||
|
|
||
|
# 2. 创建新的构建目录
|
||
|
create_build_dir
|
||
|
|
||
|
# 3. 运行 CMake 配置
|
||
|
run_cmake
|
||
|
|
||
|
# 4. 执行 Make 构建
|
||
|
run_make
|
||
|
|
||
|
# 5. 检查生成的可执行文件是否存在
|
||
|
check_executable_exists
|
||
|
|
||
|
# 6. 准备目标软链接并创建软链接
|
||
|
prepare_target_link
|
||
|
create_symlink
|
||
|
|
||
|
log_info "所有步骤完成!"
|
||
|
}
|
||
|
|
||
|
# 执行主流程
|
||
|
main
|