-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompile_run.sh
More file actions
executable file
·89 lines (74 loc) · 2.28 KB
/
compile_run.sh
File metadata and controls
executable file
·89 lines (74 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
# 设置 example 目录路径
EXAMPLE_DIR="../example"
# 解析命令行参数
AUTO_RUN=false
while [[ $# -gt 0 ]]; do
case $1 in
-y)
AUTO_RUN=true
shift
;;
*)
echo "未知参数: $1"
echo "用法: $0 [-y]"
echo " -y: 编译完成后自动运行"
exit 1
;;
esac
done
# 获取当前目录下的所有 .cpp 文件
CPP_FILES=($(find "$EXAMPLE_DIR" -maxdepth 1 -name "*.cpp" -printf "%f\n" | sort))
# 如果没有找到文件,退出
if [ ${#CPP_FILES[@]} -eq 0 ]; then
echo "当前目录下没有 .cpp 文件"
exit 1
fi
# 打印编号列表
echo "可用的 .cpp 文件:"
for i in "${!CPP_FILES[@]}"; do
index=$((i+1))
echo "[$index] ${CPP_FILES[$i]}"
done
# 提示用户选择
read -p "请输入要编译的编号: " SELECTED_INDEX
# 检查输入合法性
if ! [[ "$SELECTED_INDEX" =~ ^[0-9]+$ ]] || [ "$SELECTED_INDEX" -lt 1 ] || [ "$SELECTED_INDEX" -gt "${#CPP_FILES[@]}" ]; then
echo "无效的编号:$SELECTED_INDEX"
exit 1
fi
# 获取目标名(去掉扩展名)
FILENAME="${CPP_FILES[$((SELECTED_INDEX-1))]}"
TARGET_NAME="${FILENAME%.cpp}"
echo "开始构建目标: $TARGET_NAME"
echo "路径 $BUILD_DIR"
cmake --build . --target "$TARGET_NAME" install
if [ $? -eq 0 ]; then
echo "$TARGET_NAME 构建完成..."
if [ "$AUTO_RUN" = true ]; then
echo "===================================="
echo "自动执行 sudo ./bin/$TARGET_NAME"
sudo "./bin/$TARGET_NAME"
else
echo -e "是否需要执行?按 [Enter] 执行,按 [Esc] 取消"
# 读取单个字符(不显示)判断回车或 ESC
read -s -n 1 key
if [[ $key == "" ]]; then
echo "===================================="
echo "执行 sudo ./bin/$TARGET_NAME"
sudo "./bin/$TARGET_NAME"
elif [[ $key == $'\e' ]]; then
echo "===================================="
echo "已取消执行"
exit 0
else
echo "===================================="
echo "未知按键,已取消执行"
exit 1
fi
fi
else
echo "===================================="
echo "$TARGET_NAME 构建失败"
exit 1
fi