-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·58 lines (49 loc) · 1.34 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·58 lines (49 loc) · 1.34 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
#!/usr/bin/env bash
set -euo pipefail
root_dir="$(
cd "$(dirname "${BASH_SOURCE[0]}")"
pwd
)"
build_dir="${BUILD_DIR:-${root_dir}/build}"
install_dir="${INSTALL_DIR:-${root_dir}/install}"
generator="${CMAKE_GENERATOR:-}"
cache_generator=""
if [ -f "$build_dir/CMakeCache.txt" ]; then
cache_generator="$(sed -n \
's/^CMAKE_GENERATOR:INTERNAL=//p' \
"$build_dir/CMakeCache.txt")"
fi
cmake_help="$(cmake --help 2>/dev/null || true)"
if [ -z "$generator" ]; then
if printf '%s\n' "$cmake_help" | grep -q "Ninja Multi-Config"; then
generator="Ninja Multi-Config"
elif printf '%s\n' "$cmake_help" | grep -q "^ Ninja$"; then
generator="Ninja"
fi
fi
if [ -n "$cache_generator" ] && [ -n "$generator" ] \
&& [ "$cache_generator" != "$generator" ]; then
printf 'Existing CMake generator: %s\n' "$cache_generator"
printf 'Requested generator: %s\n' "$generator"
printf 'Delete prior CMake cache files first? (y/N): '
read -r reply
case "$reply" in
y|Y)
rm -f "$build_dir/CMakeCache.txt"
rm -rf "$build_dir/CMakeFiles"
cache_generator=""
;;
*)
generator="$cache_generator"
;;
esac
fi
cmake_args=(
-S "$root_dir"
-B "$build_dir"
"-DCMAKE_INSTALL_PREFIX=$install_dir"
)
if [ -n "$generator" ]; then
cmake_args=(-G "$generator" "${cmake_args[@]}")
fi
cmake "${cmake_args[@]}" "$@"