100 lines
2.5 KiB
Bash
Executable File
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 |