GrabBag/GrabBagPrj/project_registry.sh
2026-07-15 14:42:02 +08:00

152 lines
7.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# =============================================================================
# 项目注册表 — 新增项目只需编辑此文件
# =============================================================================
#
# 命令:
# ./project_release.sh <项目名> 编译 + 打包 + 更新版本(最常用)
# ./project_pkg_desktop.sh <项目名> 仅打包桌面应用
# ./project_pkg_service.sh <项目名> 仅打包服务
# ./project_updateversion.sh <项目名> 仅更新版本号
# ./buildArmPrj.sh <项目名> 仅编译
#
# 格式: "项目名;算法目录名[;key=value;...]"
#
# 自动推导(无需手动填写):
# version_macro 大写(项目名) 例: GrabBag → GRABBAG
# 桌面 app_dir App/${name}/${name}App 例: App/GrabBag/GrabBagApp
# 服务 app_dir App/${name}/${name}Server 例: App/BeltTearing/BeltTearingServer
# 服务 package basename(app_dir) 例: BeltTearingServer
# 服务 service ${app_dir}/${slug}.service 例: belttearingserver.service
# 服务 config 存在即自动打包
# algo_copy glob|AppAlgo/${algo}/Arm/aarch64/*.so|usr/lib
# device_copy VzNLSDK非 VzNLSDK 时自动补为 optional
#
# 可选覆盖 (key=value):
# 通用: app_dir version_macro opencv device_copy(none=不复制) description comment
# package_depends(DEB Depends 字段,逗号分隔)
# 桌面: algo_copy extra_copy optional_copy ld_conf
# 服务: app_dir app_suffix(默认 Server) extra_copy optional_copy
#
# 多条 spec: extra_copy 与 optional_copy 支持以英文逗号分隔多条复制规则
# 例: extra_copy=glob|A/*.so|usr/lib,glob|B/*.so|usr/lib
# =============================================================================
SCRIPT_DIR="${SCRIPT_DIR:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}"
source "${SCRIPT_DIR}/project_meta.sh"
COPY_VZNLSDK="glob|Device/SDK/VzNLSDK/Arm/aarch64/*.so|usr/lib"
# 复制编译生成的动态库
# 说明项目内部库绝大多数是静态库CONFIG += staticlib已在链接阶段
# 打进可执行文件,运行时不需要 .so。实测各目录产出
# Device / Utils / Nets —— 全为静态库,不产出 .so
# Module —— 含 3 个动态库BinocularMarkReceiver /
# FFMediaStream / WDRemoteReceiver需随包部署
COPY_DEVICE_LIBS="globa|GrabBagPrj/buildarm/Device/*/*.so*|usr/lib"
COPY_MODULE_LIBS="globa|GrabBagPrj/buildarm/Module/*/*.so*|usr/lib"
COPY_UTILS_LIBS="globa|GrabBagPrj/buildarm/Utils/*/*.so*|usr/lib"
COPY_NETS_LIBS="globa|GrabBagPrj/buildarm/Nets/*.so*|usr/lib"
# 合并编译生成的动态库:当前仅 Module 实际产出 .so。
# 这些规则走 requiredextra_copy空匹配会导致打包失败
# 因此只能收集确实存在 .so 的目录。若将来 Device/Utils/Nets
# 某目录新增动态库CONFIG += shared把对应 COPY_*_LIBS 追加到下方即可。
COPY_ALL_BUILD_LIBS="${COPY_MODULE_LIBS}"
# ===== 桌面项目 =====
DESKTOP_PROJECTS=(
"GrabBag;bagPosition;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"LapWeld;lapWeldDetection;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"Workpiece;workpieceCornerExtraction;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"ParticleSize;particleSizeMeasure;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"ScrewPosition;rodAndBarDetection;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"WorkpieceHole;workpieceHolePositioning;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"DiscHolePose;workpieceHolePositioning;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"TireHolePose;workpieceHolePositioning;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"JiuruiWorkpiecePose;workpieceHolePositioning;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"StatorPosition;motorStatorPosition;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"RodAndBarPosition;rodAndBarDetection;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"RodWeldSeam;rodAndBarDetection;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"HolePitPosition;workpieceHolePositioning;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"WheelMeasure;wheelArchHeigthMeasure;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"BagThreadPosition;bagThreadPositioning;\
extra_copy=${COPY_ALL_BUILD_LIBS},glob|Device/SDK/gl_linelaser_sdk/aarch64_linux/*.so|usr/lib"
"HoleDetection;holeDetection;\
algo_copy=globa|AppAlgo/holeDetection/arm/release/*.so*|usr/lib;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"TunnelChannel;channelSpaceMeasure;\
ld_conf=/usr/lib/HCNetSDKCom;\
extra_copy=${COPY_ALL_BUILD_LIBS},globa|Device/SDK/HCNetSDK/Arm64/lib/*.so*|usr/lib;\
optional_copy=globa|Device/SDK/HCNetSDK/Arm64/lib/HCNetSDKCom/*.so*|usr/lib/HCNetSDKCom"
"ParkingSpaceGuide;none;\
device_copy=globa|Device/SDK/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/*.so*|usr/lib;\
extra_copy=${COPY_ALL_BUILD_LIBS},globa|SDK/poco/Arm/aarch64/lib/libPocoNet.so*|usr/lib,globa|SDK/poco/Arm/aarch64/lib/libPocoFoundation.so*|usr/lib;\
optional_copy=globa|Device/SDK/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/ThirdParty/*.so*|usr/lib"
"WorkpiecePosition;binocularMark;\
app_dir=App/WorkpieceProject/WorkpiecePositionApp;\
version_macro=WORKPIECEPOSITION;\
opencv=opencv480;\
device_copy=none;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"WorkpieceSplice;binocularMark;\
app_dir=App/WorkpieceProject/WorkpieceSpliceApp;\
version_macro=WORKPIECESPLICE;\
opencv=opencv480;\
device_copy=none;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"DroneScrewCtrlApp;none;\
app_dir=App/DroneScrewbolt/DroneScrewCtrlApp;\
version_macro=DRONESCREWCTRL;\
device_copy=none;\
extra_copy=${COPY_ALL_BUILD_LIBS},globa|Nets/SDK/ZeroMQ/Arm/aarch64/libzmq.so*|usr/lib;\
description=DroneScrew Ctrl (board 2)"
)
# ===== 服务项目 =====
SERVICE_PROJECTS=(
"BeltTearing;beltTearing;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"BinocularMark;binocularMark;\
opencv=opencv480;\
device_copy=glob|Device/SDK/Galaxy/aarch64/lib/armv8/*|usr/lib;\
extra_copy=${COPY_ALL_BUILD_LIBS}"
"DroneScrewServer;none;\
app_dir=App/DroneScrewbolt/DroneScrewServer;\
version_macro=DRONESCREWSERVER;\
app_suffix=Server;\
opencv=opencv450;\
device_copy=globa|Device/SDK/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/*.so*|usr/lib;\
extra_copy=${COPY_ALL_BUILD_LIBS},globa|Nets/SDK/ZeroMQ/Arm/aarch64/libzmq.so*|usr/lib,file|SDK/mediamtx/arm64/mediamtx|opt/dronescrewserver/bin/mediamtx,file|App/DroneScrewbolt/DroneScrewServer/service/mediamtx_dronescrew.yml|opt/dronescrewserver/etc/mediamtx_dronescrew.yml,file|App/DroneScrewbolt/DroneScrewServer/service/mediamtx-dronescrew.service|opt/dronescrewserver/etc/mediamtx-dronescrew.service,globa|AppAlgo/stereo_bolt_delivery/lib/*.so*|usr/lib,dir|AppAlgo/stereo_bolt_delivery/config|opt/dronescrewserver/config,dir|AppAlgo/stereo_bolt_delivery/calib|opt/dronescrewserver/calib,dir|AppAlgo/stereo_bolt_delivery/weights|opt/dronescrewserver/weights;\
optional_copy=globa|SDK/Protobuf_3_20/Arm/aarch64/libprotobuf.so*|usr/lib,globa|Device/SDK/MVS/MVS_STD_V3.0.1_251113/MVS-3.0.1_aarch64_20251113/lib/aarch64/ThirdParty/*.so*|usr/lib;\
description=DroneScrew Server (board 1)"
)
# ===== 执行注册 =====
_register_desktop_projects
_register_service_projects