#!/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 else echo "编译 debug 版本..." cargo build --features gpio fi echo "✓ demos 编译完成(包含 GPIO 支持)" else echo "✓ 检测到非树莓派平台" echo "编译 demos 时不启用 GPIO 功能..." if [[ "$1" == "release" ]]; then echo "编译 release 版本..." cargo build --release else echo "编译 debug 版本..." cargo build 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