119 lines
3.1 KiB
Bash
Executable File
119 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
||
# ==============================================================================
|
||
# TLUSTY 和 SYNSPEC 构建脚本
|
||
# ==============================================================================
|
||
|
||
set -e
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 默认配置
|
||
BUILD_TYPE="Release"
|
||
INSTALL_DIR="${INSTALL_DIR:-../install}"
|
||
CLEAN_BUILD=false
|
||
PARALLEL_JOBS=$(nproc)
|
||
|
||
# 打印帮助信息
|
||
print_usage() {
|
||
echo "用法:$0 [选项]"
|
||
echo ""
|
||
echo "选项:"
|
||
echo " -d, --debug 使用 Debug 模式编译(默认:Release)"
|
||
echo " -c, --clean 清理构建目录后重新编译"
|
||
echo " -i, --install DIR 指定安装目录(默认:../install)"
|
||
echo " -j, --jobs N 设置并行编译任务数(默认:$(nproc))"
|
||
echo " -h, --help 显示此帮助信息"
|
||
echo ""
|
||
echo "示例:"
|
||
echo " $0 # 使用默认设置编译"
|
||
echo " $0 -d # Debug 模式编译"
|
||
echo " $0 -c -j 8 # 清理并使用 8 个任务编译"
|
||
echo " $0 -i /opt/tlusty # 安装到指定目录"
|
||
}
|
||
|
||
# 解析命令行参数
|
||
while [[ $# -gt 0 ]]; do
|
||
case $1 in
|
||
-d|--debug)
|
||
BUILD_TYPE="Debug"
|
||
shift
|
||
;;
|
||
-c|--clean)
|
||
CLEAN_BUILD=true
|
||
shift
|
||
;;
|
||
-i|--install)
|
||
INSTALL_DIR="$2"
|
||
shift 2
|
||
;;
|
||
-j|--jobs)
|
||
PARALLEL_JOBS="$2"
|
||
shift 2
|
||
;;
|
||
-h|--help)
|
||
print_usage
|
||
exit 0
|
||
;;
|
||
*)
|
||
echo -e "${RED}未知选项:$1${NC}"
|
||
print_usage
|
||
exit 1
|
||
;;
|
||
esac
|
||
done
|
||
|
||
# 获取脚本所在目录
|
||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||
cd "$SCRIPT_DIR"
|
||
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo -e "${GREEN}TLUSTY/SYNSPEC 构建脚本${NC}"
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo ""
|
||
|
||
# 创建构建目录
|
||
BUILD_DIR="${SCRIPT_DIR}/build"
|
||
if [ "$CLEAN_BUILD" = true ]; then
|
||
echo -e "${YELLOW}清理构建目录...${NC}"
|
||
rm -rf "$BUILD_DIR"
|
||
fi
|
||
|
||
mkdir -p "$BUILD_DIR"
|
||
cd "$BUILD_DIR"
|
||
|
||
# 运行 CMake 配置
|
||
echo -e "${YELLOW}运行 CMake 配置...${NC}"
|
||
cmake .. \
|
||
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||
-DBUILD_TLUSTY=ON \
|
||
-DBUILD_SYNSPEC=ON \
|
||
-DBUILD_TESTS=OFF \
|
||
-DENABLE_LARGE_MODEL=ON
|
||
|
||
# 编译
|
||
echo -e "${YELLOW}开始编译(使用 $PARALLEL_JOBS 个任务)...${NC}"
|
||
make -j"$PARALLEL_JOBS"
|
||
|
||
# 安装
|
||
echo -e "${YELLOW}安装到 $INSTALL_DIR ...${NC}"
|
||
make install
|
||
|
||
echo ""
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo -e "${GREEN}构建完成!${NC}"
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo ""
|
||
echo "可执行文件位置:"
|
||
echo " TLUSTY: $INSTALL_DIR/bin/tlusty.exe"
|
||
echo " SYNSPEC: $INSTALL_DIR/bin/synspec.exe"
|
||
echo ""
|
||
echo "模块文件位置:"
|
||
echo " TLUSTY 模块: $INSTALL_DIR/include/tlusty/"
|
||
echo " SYNSPEC 模块: $INSTALL_DIR/include/synspec/"
|
||
echo ""
|