52 lines
1.2 KiB
Bash
52 lines
1.2 KiB
Bash
|
|
#!/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
|