91 lines
2.3 KiB
Bash
91 lines
2.3 KiB
Bash
#!/bin/bash
|
||
|
||
# Linux/macOS构建脚本
|
||
|
||
print_help() {
|
||
echo "ECS Core Rust WASM构建脚本"
|
||
echo ""
|
||
echo "用法:"
|
||
echo " ./build.sh # 构建WASM包"
|
||
echo " ./build.sh --install # 安装依赖并构建"
|
||
echo " ./build.sh --help # 显示帮助"
|
||
echo ""
|
||
echo "环境要求:"
|
||
echo " - Rust (rustup)"
|
||
echo " - wasm-pack"
|
||
}
|
||
|
||
# 解析参数
|
||
INSTALL=false
|
||
for arg in "$@"; do
|
||
case $arg in
|
||
--install)
|
||
INSTALL=true
|
||
shift
|
||
;;
|
||
--help)
|
||
print_help
|
||
exit 0
|
||
;;
|
||
*)
|
||
echo "未知参数: $arg"
|
||
print_help
|
||
exit 1
|
||
;;
|
||
esac
|
||
done
|
||
|
||
echo "开始构建Rust WASM包..."
|
||
|
||
# 检查Rust是否安装
|
||
if ! command -v cargo &> /dev/null; then
|
||
echo "错误: 未找到cargo命令"
|
||
if [ "$INSTALL" = true ]; then
|
||
echo "正在安装Rust..."
|
||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||
source ~/.cargo/env
|
||
else
|
||
echo "请先安装Rust: https://rustup.rs/"
|
||
echo "或者使用 --install 参数自动安装"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# 确保环境变量加载
|
||
if [ -f ~/.cargo/env ]; then
|
||
source ~/.cargo/env
|
||
fi
|
||
|
||
# 检查wasm-pack是否安装
|
||
if ! command -v wasm-pack &> /dev/null; then
|
||
echo "未找到wasm-pack,正在安装..."
|
||
if [ "$INSTALL" = true ] || { echo "是否安装wasm-pack? (y/N)"; read -r response; [ "$response" = "y" ] || [ "$response" = "Y" ]; }; then
|
||
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
||
else
|
||
echo "请先安装wasm-pack: https://rustwasm.github.io/wasm-pack/installer/"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# 添加wasm32目标
|
||
echo "添加wasm32目标..."
|
||
rustup target add wasm32-unknown-unknown
|
||
|
||
# 构建WASM包
|
||
echo "构建WASM包..."
|
||
export RUST_LOG=warn # 减少日志输出
|
||
|
||
if wasm-pack build --target web --out-dir ../core/src/wasm --out-name ecs-core-rust; then
|
||
echo "构建成功!"
|
||
echo "生成的文件位于: ../core/src/wasm/"
|
||
|
||
# 显示生成的文件
|
||
echo -e "\n生成的文件:"
|
||
ls -la ../core/src/wasm/ | grep -v '^d' | awk '{print " " $9}' | grep -v '^$'
|
||
else
|
||
echo "构建失败,退出码: $?"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "\n构建完成!"
|
||
echo "现在可以在TypeScript中使用WASM版本的ECS核心了。" |