102 lines
2.4 KiB
Bash
102 lines
2.4 KiB
Bash
#!/bin/bash
|
|
# build_and_run.sh - 在 Orin 上构建并运行 V4L2 取图 demo
|
|
#
|
|
# 使用方法:
|
|
# ./build_and_run.sh [选项]
|
|
#
|
|
# 选项:
|
|
# --deploy 将源码复制到 Orin 并构建
|
|
# --run 在 Orin 上运行已构建的程序
|
|
# --both 部署并运行 (默认)
|
|
#
|
|
# 示例:
|
|
# ./build_and_run.sh --both
|
|
# ./build_and_run.sh --deploy
|
|
# ./build_and_run.sh --run --args "-n 100 -v"
|
|
|
|
set -e
|
|
|
|
# 配置
|
|
ORIN_HOST="192.168.195.100"
|
|
ORIN_USER="orin"
|
|
ORIN_PASS="${ORIN_PASS:?Set ORIN_PASS locally, or use scripts/deploy.sh for interactive SSH}"
|
|
export SSHPASS="$ORIN_PASS"
|
|
LOCAL_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
BUILD_DIR="$LOCAL_DIR/build"
|
|
BIN_NAME="vision-anti-pinch"
|
|
|
|
# 默认参数
|
|
ACTION="both"
|
|
RUN_ARGS="-n 100"
|
|
|
|
# 解析参数
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--deploy) ACTION="deploy"; shift ;;
|
|
--run) ACTION="run"; shift ;;
|
|
--both) ACTION="both"; shift ;;
|
|
--args)
|
|
RUN_ARGS="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# 部署函数
|
|
do_deploy() {
|
|
echo "=== 部署源码到 Orin ==="
|
|
|
|
# 创建临时目录用于传输
|
|
TEMP_DIR=$(mktemp -d)
|
|
cp -r "$LOCAL_DIR"/* "$TEMP_DIR/"
|
|
|
|
# 使用 sshpass 复制 (如果没有 sshpass, 手动复制)
|
|
if command -v sshpass &> /dev/null; then
|
|
echo "复制源码到 Orin..."
|
|
sshpass -e scp -o StrictHostKeyChecking=no -r "$TEMP_DIR"/* "${ORIN_USER}@${ORIN_HOST}:~/vision-anti-pinch/"
|
|
else
|
|
echo "警告: 未安装 sshpass, 请手动复制源码到 Orin:"
|
|
echo " scp -r $LOCAL_DIR/* ${ORIN_USER}@${ORIN_HOST}:~/vision-anti-pinch/"
|
|
return 1
|
|
fi
|
|
|
|
rm -rf "$TEMP_DIR"
|
|
|
|
echo "=== 在 Orin 上构建 ==="
|
|
sshpass -e ssh -o StrictHostKeyChecking=no "${ORIN_USER}@${ORIN_HOST}" << 'EOF'
|
|
cd ~/vision-anti-pinch
|
|
make clean
|
|
make -j$(nproc)
|
|
echo "构建完成"
|
|
EOF
|
|
|
|
echo "部署完成"
|
|
}
|
|
|
|
# 运行函数
|
|
do_run() {
|
|
echo "=== 在 Orin 上运行 ==="
|
|
sshpass -e ssh -o StrictHostKeyChecking=no "${ORIN_USER}@${ORIN_HOST}" << EOF
|
|
cd ~/vision-anti-pinch
|
|
./${BIN_NAME} ${RUN_ARGS}
|
|
EOF
|
|
}
|
|
|
|
# 主流程
|
|
echo "V4L2 Capture Demo - Build & Run"
|
|
echo "================================"
|
|
|
|
if [[ "$ACTION" == "deploy" ]] || [[ "$ACTION" == "both" ]]; then
|
|
do_deploy
|
|
fi
|
|
|
|
if [[ "$ACTION" == "run" ]] || [[ "$ACTION" == "both" ]]; then
|
|
do_run
|
|
fi
|
|
|
|
echo "完成"
|