meteor_detect/demos/build_demos.sh

100 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# 检测平台并编译 demos 的脚本
set -e
# 检测是否在树莓派上
detect_raspberry_pi() {
# 检查是否是Linux系统
if [[ "$OSTYPE" != "linux-gnu"* ]]; then
return 1
fi
# 检查CPU信息
if grep -q "Raspberry Pi\|BCM2708\|BCM2709\|BCM2710\|BCM2711\|BCM2835\|BCM2836\|BCM2837\|BCM2838" /proc/cpuinfo 2>/dev/null; then
return 0
fi
# 检查设备树模型文件
if grep -q "Raspberry Pi" /sys/firmware/devicetree/base/model 2>/dev/null; then
return 0
fi
# 检查配置文件
if [[ -f "/boot/config.txt" ]] || [[ -f "/boot/firmware/config.txt" ]]; then
return 0
fi
return 1
}
# 主编译逻辑
main() {
echo "检测运行平台..."
if detect_raspberry_pi; then
echo "✓ 检测到树莓派平台"
echo "编译 demos 时启用 GPIO 功能..."
if [[ "$1" == "release" ]]; then
echo "编译 release 版本..."
cargo build --release --features gpio,gstreamer-display
else
echo "编译 debug 版本..."
cargo build --features gpio,gstreamer-display
fi
echo "✓ demos 编译完成(包含 GPIO 支持)"
else
echo "✓ 检测到非树莓派平台"
echo "编译 demos 时不启用 GPIO 功能..."
if [[ "$1" == "release" ]]; then
echo "编译 release 版本..."
cargo build --release --features gstreamer-display
else
echo "编译 debug 版本..."
cargo build --features gstreamer-display
fi
echo "✓ demos 编译完成(模拟模式)"
fi
}
# 显示帮助信息
show_help() {
echo "用法: $0 [release]"
echo ""
echo "选项:"
echo " release 编译 release 版本"
echo " help 显示此帮助信息"
echo ""
echo "脚本会自动检测是否在树莓派上运行,并相应地启用或禁用 GPIO 功能。"
echo ""
echo "运行特定 demo:"
echo " cargo run --bin camera_demo [--features gpio]"
echo " cargo run --bin watermark_demo [--features gpio]"
echo " cargo run --bin file_input_demo [--features gpio]"
echo " cargo run --bin star_chart_demo [--features gpio]"
}
# 检查参数
case "${1:-}" in
"help"|"-h"|"--help")
show_help
exit 0
;;
"")
main
;;
"release")
main release
;;
*)
echo "错误: 未知参数 '$1'"
echo ""
show_help
exit 1
;;
esac