52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
||
set -euo pipefail
|
||
|
||
ACTION="${1:-}"
|
||
LINK_MODE="${2:-static}"
|
||
BUILD_DIR="build"
|
||
|
||
usage() {
|
||
echo "用法:"
|
||
echo " ./build.sh all [static|shared|embed] 配置并编译整个工程"
|
||
echo " ./build.sh run 运行 build/test"
|
||
echo " ./build.sh clean 清理 build 目录"
|
||
}
|
||
|
||
check_link_mode() {
|
||
case "$1" in
|
||
static|shared|embed)
|
||
;;
|
||
*)
|
||
echo "错误: 无效的 has_platform 接入模式 '$1'"
|
||
usage
|
||
exit 1
|
||
;;
|
||
esac
|
||
}
|
||
|
||
case "${ACTION}" in
|
||
all)
|
||
check_link_mode "${LINK_MODE}"
|
||
mkdir -p "${BUILD_DIR}"
|
||
rm -rf "${BUILD_DIR:?}/"*
|
||
cmake -S . -B "${BUILD_DIR}" \
|
||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||
-DHAS_PLATFORM_LINK_MODE="${LINK_MODE}"
|
||
cmake --build "${BUILD_DIR}" -j"$(nproc)"
|
||
;;
|
||
run)
|
||
if [ ! -x "${BUILD_DIR}/test" ]; then
|
||
echo "错误: 未找到 ${BUILD_DIR}/test,请先执行 ./build.sh all"
|
||
exit 1
|
||
fi
|
||
"${BUILD_DIR}/test"
|
||
;;
|
||
clean)
|
||
rm -rf "${BUILD_DIR}"
|
||
;;
|
||
*)
|
||
usage
|
||
exit 1
|
||
;;
|
||
esac
|