调优pro编译,进行快速编译
This commit is contained in:
parent
5dda95edb9
commit
4d9f7170ee
63
App/App.pro
63
App/App.pro
@ -1,28 +1,41 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 拆包项目
|
||||
SUBDIRS += ./GrabBag/GrabBag.pro
|
||||
# 通过 TARGET_APP 变量指定要编译的应用
|
||||
# 用法: qmake "TARGET_APP=GrabBag" 或不指定则编译全部
|
||||
# 可用值: GrabBag, BeltTearing, LapWeld, Workpiece, ParticleSize,
|
||||
# BinocularMark, WorkpieceProject, TunnelChannel, WheelMeasure
|
||||
|
||||
# 撕裂项目
|
||||
SUBDIRS += ./BeltTearing/BeltTearing.pro
|
||||
|
||||
# 焊接
|
||||
SUBDIRS += ./LapWeld/LapWeld.pro
|
||||
|
||||
# 工件定位
|
||||
SUBDIRS += ./Workpiece/Workpiece.pro
|
||||
|
||||
# 颗粒尺寸检测
|
||||
SUBDIRS += ./ParticleSize/ParticleSize.pro
|
||||
|
||||
# 双目Mark检测
|
||||
SUBDIRS += ./BinocularMark/BinocularMark.pro
|
||||
|
||||
# 工件项目(WorkpiecePosition和WorkpieceSplice)
|
||||
SUBDIRS += ./WorkpieceProject/WorkpieceProject.pro
|
||||
|
||||
# 铁路隧道槽道测量
|
||||
SUBDIRS += ./TunnelChannel/TunnelChannel.pro
|
||||
|
||||
# 车轮拱高测量
|
||||
SUBDIRS += ./WheelMeasure/WheelMeasure.pro
|
||||
isEmpty(TARGET_APP) {
|
||||
# 未指定则编译全部
|
||||
SUBDIRS += GrabBag/GrabBag.pro # 拆包项目
|
||||
SUBDIRS += BeltTearing/BeltTearing.pro # 撕裂项目
|
||||
SUBDIRS += LapWeld/LapWeld.pro # 焊接
|
||||
SUBDIRS += Workpiece/Workpiece.pro # 工件定位
|
||||
SUBDIRS += ParticleSize/ParticleSize.pro # 颗粒尺寸检测
|
||||
SUBDIRS += BinocularMark/BinocularMark.pro # 双目Mark检测
|
||||
SUBDIRS += WorkpieceProject/WorkpieceProject.pro # 工件项目
|
||||
SUBDIRS += TunnelChannel/TunnelChannel.pro # 铁路隧道槽道测量
|
||||
SUBDIRS += WheelMeasure/WheelMeasure.pro # 车轮拱高测量
|
||||
} else {
|
||||
equals(TARGET_APP, "GrabBag") {
|
||||
SUBDIRS += GrabBag/GrabBag.pro
|
||||
} else:equals(TARGET_APP, "BeltTearing") {
|
||||
SUBDIRS += BeltTearing/BeltTearing.pro
|
||||
} else:equals(TARGET_APP, "LapWeld") {
|
||||
SUBDIRS += LapWeld/LapWeld.pro
|
||||
} else:equals(TARGET_APP, "Workpiece") {
|
||||
SUBDIRS += Workpiece/Workpiece.pro
|
||||
} else:equals(TARGET_APP, "ParticleSize") {
|
||||
SUBDIRS += ParticleSize/ParticleSize.pro
|
||||
} else:equals(TARGET_APP, "BinocularMark") {
|
||||
SUBDIRS += BinocularMark/BinocularMark.pro
|
||||
} else:equals(TARGET_APP, "WorkpieceProject") {
|
||||
SUBDIRS += WorkpieceProject/WorkpieceProject.pro
|
||||
} else:equals(TARGET_APP, "TunnelChannel") {
|
||||
SUBDIRS += TunnelChannel/TunnelChannel.pro
|
||||
} else:equals(TARGET_APP, "WheelMeasure") {
|
||||
SUBDIRS += WheelMeasure/WheelMeasure.pro
|
||||
} else {
|
||||
error("无效的 TARGET_APP: $$TARGET_APP")
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,9 +4,3 @@ TEMPLATE = subdirs
|
||||
SUBDIRS += BeltTearingConfig/BeltTearingConfig.pro
|
||||
SUBDIRS += BeltTearingApp/BeltTearingApp.pro
|
||||
SUBDIRS += BeltTearingServer/BeltTearingServer.pro
|
||||
|
||||
# 设置编译顺序依赖
|
||||
BeltTearingApp.depends += ../../../VrNets/VrTcpClient.pro
|
||||
BeltTearingApp.depends += BeltTearingConfig/BeltTearingConfig.pro
|
||||
|
||||
BeltTearingServer.depends += BeltTearingConfig/BeltTearingConfig.pro
|
||||
|
||||
@ -1,13 +1,8 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 拆包项目
|
||||
# 双目Mark检测项目
|
||||
SUBDIRS += BinocularMarkApp/BinocularMarkApp.pro
|
||||
|
||||
win32 {
|
||||
|
||||
SUBDIRS += BinocularMarkTest/BinocularMarkTest.pro
|
||||
|
||||
# 依赖关系
|
||||
BinocularMarkTest.depends = BinocularMarkReceiver
|
||||
}
|
||||
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 拆包项目
|
||||
SUBDIRS += GrabBagConfig/GrabBagConfig.pro
|
||||
SUBDIRS += GrabBagApp/GrabBagApp.pro
|
||||
# SUBDIRS += GrabBagConfigCmd
|
||||
|
||||
# 设置编译依赖顺序:GrabBagApp 依赖于 GrabBagConfig
|
||||
GrabBagApp.depends = GrabBagConfig
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
# 拆包项目
|
||||
SUBDIRS += LapWeldApp/LapWeldApp.pro
|
||||
|
||||
# 焊接项目
|
||||
SUBDIRS += LapWeldConfig/LapWeldConfig.pro
|
||||
SUBDIRS += LapWeldApp/LapWeldApp.pro
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 子项目
|
||||
# 颗粒尺寸检测项目
|
||||
SUBDIRS += ParticleSizeConfig/ParticleSizeConfig.pro
|
||||
SUBDIRS += ParticleSizeApp/ParticleSizeApp.pro
|
||||
|
||||
# 设置构建依赖顺序:ParticleSizeApp 依赖 ParticleSizeConfig
|
||||
ParticleSizeApp.depends = ParticleSizeConfig
|
||||
|
||||
@ -54,6 +54,13 @@ struct SizeParam
|
||||
double length = 0.0; // 长度(mm)
|
||||
double width = 0.0; // 宽度(mm)
|
||||
double height = 0.0; // 高度(mm)
|
||||
|
||||
// 默认构造函数
|
||||
SizeParam() = default;
|
||||
|
||||
// 带参数的构造函数,支持花括号初始化
|
||||
SizeParam(double l, double w, double h)
|
||||
: length(l), width(w), height(h) {}
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 子项目
|
||||
# 铁路隧道槽道测量项目
|
||||
SUBDIRS += TunnelChannelConfig/TunnelChannelConfig.pro
|
||||
SUBDIRS += TunnelChannelApp/TunnelChannelApp.pro
|
||||
|
||||
# 设置构建依赖顺序:TunnelChannelApp 依赖 TunnelChannelConfig
|
||||
TunnelChannelApp.depends = TunnelChannelConfig
|
||||
|
||||
@ -3,6 +3,3 @@ TEMPLATE = subdirs
|
||||
# 车轮拱高测量项目
|
||||
SUBDIRS += WheelMeasureConfig/WheelMeasureConfig.pro
|
||||
SUBDIRS += WheelMeasureApp/WheelMeasureApp.pro
|
||||
|
||||
# 设置编译顺序依赖
|
||||
WheelMeasureApp.depends += WheelMeasureConfig
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 子项目
|
||||
# 工件定位项目
|
||||
SUBDIRS += WorkpieceConfig/WorkpieceConfig.pro
|
||||
SUBDIRS += WorkpieceApp/WorkpieceApp.pro
|
||||
|
||||
# 设置构建依赖顺序:WorkpieceApp 依赖 WorkpieceConfig
|
||||
WorkpieceApp.depends = WorkpieceConfig
|
||||
|
||||
@ -74,16 +74,18 @@ win32:CONFIG(debug, debug|release) {
|
||||
LIBS += -L../WorkpieceProjectConfig -lWorkpieceProjectConfig
|
||||
LIBS += -L../../../Module/BinocularMarkReceiver -lBinocularMarkReceiver
|
||||
LIBS += -L../../../Device/EpicEyeDevice -lEpicEyeDevice
|
||||
LIBS += -L../../../Device/VrEyeDevice -lVrEyeDevice
|
||||
LIBS += -L../../../AppUtils/AppCommon -lAppCommon
|
||||
LIBS += -L../../../AppUtils/UICommon -lUICommon
|
||||
LIBS += -L../../../AppUtils/CloudUtils -lCloudUtils
|
||||
LIBS += -L../../../VrUtils -lVrUtils
|
||||
# AppCommon 依赖
|
||||
# AppCommon 依赖(VrEyeDevice 必须在 AppCommon 之后)
|
||||
LIBS += -L../../../Device/VrEyeDevice -lVrEyeDevice
|
||||
LIBS += -L../../../Module/ModbusTCPServer -lModbusTCPServer
|
||||
LIBS += -L../../../Module/ShareMem -lShareMem
|
||||
LIBS += -L../../../VrNets -lVrModbus
|
||||
LIBS += -L../../../VrNets -lVrTCPServer
|
||||
# BinocularMarkReceiver 依赖
|
||||
LIBS += -L../../../VrNets -lVrTcpClient
|
||||
LIBS += -L../../../VrUtils -lVrUtils
|
||||
LIBS += -lpthread -lrt
|
||||
}
|
||||
|
||||
|
||||
@ -3,14 +3,7 @@
|
||||
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 子项目列表
|
||||
SUBDIRS += \
|
||||
WorkpieceProjectConfig \
|
||||
WorkpiecePositionApp \
|
||||
WorkpieceSpliceApp
|
||||
|
||||
# 设置子项目内部依赖关系
|
||||
# 公共依赖(BinocularMarkReceiver, VrEyeDevice, AppCommon, UICommon, CloudUtils, VrUtils)
|
||||
# 已在 App.pro 中统一配置
|
||||
WorkpiecePositionApp.depends = WorkpieceProjectConfig
|
||||
WorkpieceSpliceApp.depends = WorkpieceProjectConfig
|
||||
WorkpieceProjectConfig/WorkpieceProjectConfig.pro \
|
||||
WorkpiecePositionApp/WorkpiecePositionApp.pro \
|
||||
WorkpieceSpliceApp/WorkpieceSpliceApp.pro
|
||||
|
||||
@ -66,16 +66,18 @@ win32:CONFIG(debug, debug|release) {
|
||||
}else:unix:!macx {
|
||||
LIBS += -L../WorkpieceProjectConfig -lWorkpieceProjectConfig
|
||||
LIBS += -L../../../Module/BinocularMarkReceiver -lBinocularMarkReceiver
|
||||
LIBS += -L../../../Device/VrEyeDevice -lVrEyeDevice
|
||||
LIBS += -L../../../AppUtils/UICommon -lUICommon
|
||||
LIBS += -L../../../AppUtils/AppCommon -lAppCommon
|
||||
LIBS += -L../../../AppUtils/CloudUtils -lCloudUtils
|
||||
LIBS += -L../../../VrUtils -lVrUtils
|
||||
# AppCommon 依赖
|
||||
# AppCommon 依赖(VrEyeDevice 必须在 AppCommon 之后)
|
||||
LIBS += -L../../../Device/VrEyeDevice -lVrEyeDevice
|
||||
LIBS += -L../../../Module/ModbusTCPServer -lModbusTCPServer
|
||||
LIBS += -L../../../Module/ShareMem -lShareMem
|
||||
LIBS += -L../../../VrNets -lVrModbus
|
||||
LIBS += -L../../../VrNets -lVrTCPServer
|
||||
# BinocularMarkReceiver 依赖
|
||||
LIBS += -L../../../VrNets -lVrTcpClient
|
||||
LIBS += -L../../../VrUtils -lVrUtils
|
||||
LIBS += -lpthread -lrt
|
||||
}
|
||||
|
||||
|
||||
@ -1,10 +1,5 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS += ../AppUtils/UICommon/UICommon.pro
|
||||
SUBDIRS += ../AppUtils/CloudUtils/CloudUtils.pro
|
||||
SUBDIRS += ../AppUtils/AppCommon/AppCommon.pro
|
||||
|
||||
# 设置构建依赖顺序
|
||||
# AppCommon 依赖 CloudUtils(因为使用了 LaserDataLoader)
|
||||
AppCommon.depends = CloudUtils
|
||||
|
||||
SUBDIRS += UICommon/UICommon.pro
|
||||
SUBDIRS += CloudUtils/CloudUtils.pro
|
||||
SUBDIRS += AppCommon/AppCommon.pro
|
||||
|
||||
@ -6,13 +6,8 @@ TEMPLATE = subdirs
|
||||
# SDK(需要先编译)
|
||||
SUBDIRS += ../SDK/Device/EpicEye/EpicEyeSDK.pro
|
||||
|
||||
|
||||
# 子项目列表
|
||||
SUBDIRS += \
|
||||
VrEyeDevice \
|
||||
EpicEyeDevice \
|
||||
GalaxyDevice \
|
||||
HikDevice
|
||||
|
||||
# 项目依赖关系(EpicEyeSDK 在 GrabBagPrj.pro 中单独编译)
|
||||
# EpicEyeDevice.depends = EpicEyeSDK
|
||||
VrEyeDevice/VrEyeDevice.pro \
|
||||
EpicEyeDevice/EpicEyeDevice.pro \
|
||||
GalaxyDevice/GalaxyDevice.pro \
|
||||
HikDevice/HikDevice.pro
|
||||
|
||||
@ -1,24 +1,16 @@
|
||||
TEMPLATE = subdirs
|
||||
|
||||
win32-msvc {
|
||||
CONFIG += ordered
|
||||
}
|
||||
|
||||
SUBDIRS += ../VrCommon/VrCommon.pro
|
||||
SUBDIRS += ../VrUtils/VrUtils.pro
|
||||
|
||||
SUBDIRS += ../VrNets/VrNets.pro
|
||||
SUBDIRS += ../Module/Module.pro
|
||||
SUBDIRS += ../Device/Device.pro
|
||||
SUBDIRS += ../VrNets/VrNets.pro
|
||||
|
||||
SUBDIRS += ../AppUtils/AppUtils.pro
|
||||
|
||||
SUBDIRS += ../App/App.pro
|
||||
|
||||
# Test 测试
|
||||
# SUBDIRS += ../Test/Test.pro
|
||||
|
||||
# 设置构建依赖顺序
|
||||
VrUtils.depends = VrCommon
|
||||
Module.depends = VrCommon VrUtils
|
||||
Device.depends = VrCommon VrUtils EpicEyeSDK
|
||||
VrNets.depends = VrCommon VrUtils
|
||||
AppUtils.depends = VrCommon VrUtils
|
||||
App.depends = VrCommon VrUtils Device Module AppUtils VrNets
|
||||
|
||||
|
||||
@ -1,40 +1,159 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 可用的 App 列表
|
||||
AVAILABLE_APPS="GrabBag BeltTearing LapWeld Workpiece ParticleSize BinocularMark WorkpieceProject TunnelChannel WheelMeasure"
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
echo "用法: $0 [-r] [-q] [-h] [AppName]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " -r 清理编译目录后重新编译"
|
||||
echo " -q 强制重新运行 qmake(切换 App 时需要)"
|
||||
echo " -h 显示此帮助信息"
|
||||
echo ""
|
||||
echo "参数:"
|
||||
echo " AppName 指定要编译的 App 名称(可选,不指定则编译全部)"
|
||||
echo ""
|
||||
echo "可用的 App 列表:"
|
||||
for app in $AVAILABLE_APPS; do
|
||||
echo " - $app"
|
||||
done
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 # 编译全部项目(增量编译)"
|
||||
echo " $0 -r # 清理后编译全部项目"
|
||||
echo " $0 GrabBag # 只编译 GrabBag(增量编译)"
|
||||
echo " $0 -q GrabBag # 切换到编译 GrabBag(重新 qmake)"
|
||||
echo " $0 -r GrabBag # 清理后只编译 GrabBag"
|
||||
}
|
||||
|
||||
# 检查 App 是否有效
|
||||
is_valid_app() {
|
||||
local app=$1
|
||||
for valid_app in $AVAILABLE_APPS; do
|
||||
if [ "$app" = "$valid_app" ]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
# 解析参数
|
||||
CLEAN_BUILD=false
|
||||
FORCE_QMAKE=false
|
||||
TARGET_APP=""
|
||||
|
||||
while getopts "rqh" opt; do
|
||||
case $opt in
|
||||
r)
|
||||
CLEAN_BUILD=true
|
||||
;;
|
||||
q)
|
||||
FORCE_QMAKE=true
|
||||
;;
|
||||
h)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
\?)
|
||||
echo "无效选项: -$OPTARG"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 移除已处理的选项,获取剩余参数
|
||||
shift $((OPTIND-1))
|
||||
|
||||
# 获取 App 名称参数
|
||||
if [ -n "$1" ]; then
|
||||
TARGET_APP=$1
|
||||
if ! is_valid_app "$TARGET_APP"; then
|
||||
echo "错误: 无效的 App 名称 '$TARGET_APP'"
|
||||
echo ""
|
||||
echo "可用的 App 列表:"
|
||||
for app in $AVAILABLE_APPS; do
|
||||
echo " - $app"
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
START_TIME=$(date +%s)
|
||||
|
||||
if [ "$1" = "-r" ]; then
|
||||
# 清理编译目录
|
||||
if [ "$CLEAN_BUILD" = true ]; then
|
||||
echo "清理编译目录..."
|
||||
rm -rf buildarm
|
||||
FORCE_QMAKE=true
|
||||
fi
|
||||
|
||||
mkdir -p buildarm/GrabBagPrj
|
||||
cd buildarm/GrabBagPrj
|
||||
qmake -r CONFIG+=release \
|
||||
"MOC_DIR=moc" \
|
||||
"UI_DIR=ui" \
|
||||
"RCC_DIR=rcc" \
|
||||
"OBJECTS_DIR=obj" \
|
||||
"QMAKE_CC=aarch64-linux-gnu-gcc" \
|
||||
"QMAKE_CXX=aarch64-linux-gnu-g++" \
|
||||
"QMAKE_LINK=aarch64-linux-gnu-g++" \
|
||||
../../GrabBagPrj.pro
|
||||
|
||||
make -j6
|
||||
# 交叉编译配置
|
||||
QMAKE_ARGS=(
|
||||
-r
|
||||
CONFIG+=release
|
||||
"MOC_DIR=moc"
|
||||
"UI_DIR=ui"
|
||||
"RCC_DIR=rcc"
|
||||
"OBJECTS_DIR=obj"
|
||||
"QMAKE_CC=aarch64-linux-gnu-gcc"
|
||||
"QMAKE_CXX=aarch64-linux-gnu-g++"
|
||||
"QMAKE_LINK=aarch64-linux-gnu-g++"
|
||||
)
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
END_TIME=$(date +%s)
|
||||
ELAPSED=$((END_TIME - START_TIME))
|
||||
MINUTES=$((ELAPSED / 60))
|
||||
SECONDS=$((ELAPSED % 60))
|
||||
# 如果指定了 App,添加 TARGET_APP 参数
|
||||
if [ -n "$TARGET_APP" ]; then
|
||||
QMAKE_ARGS+=("TARGET_APP=$TARGET_APP")
|
||||
echo "=========================================="
|
||||
echo "编译成功!耗时: ${MINUTES}分${SECONDS}秒"
|
||||
echo "编译指定 App: $TARGET_APP"
|
||||
echo "=========================================="
|
||||
else
|
||||
echo "=========================================="
|
||||
echo "编译全部项目"
|
||||
echo "=========================================="
|
||||
fi
|
||||
|
||||
# 检查是否需要运行 qmake
|
||||
if [ "$FORCE_QMAKE" = true ]; then
|
||||
echo "运行 qmake..."
|
||||
qmake "${QMAKE_ARGS[@]}" ../../GrabBagPrj.pro
|
||||
elif [ ! -f "Makefile" ]; then
|
||||
echo "Makefile 不存在,运行 qmake..."
|
||||
qmake "${QMAKE_ARGS[@]}" ../../GrabBagPrj.pro
|
||||
else
|
||||
echo "跳过 qmake(使用 -q 强制重新生成)"
|
||||
fi
|
||||
|
||||
echo "开始编译..."
|
||||
make -j8
|
||||
BUILD_RESULT=$?
|
||||
|
||||
# 输出结果
|
||||
END_TIME=$(date +%s)
|
||||
ELAPSED=$((END_TIME - START_TIME))
|
||||
MINUTES=$((ELAPSED / 60))
|
||||
SECONDS=$((ELAPSED % 60))
|
||||
|
||||
if [ $BUILD_RESULT -eq 0 ]; then
|
||||
echo "=========================================="
|
||||
if [ -z "$TARGET_APP" ]; then
|
||||
echo "全部项目编译成功!耗时: ${MINUTES}分${SECONDS}秒"
|
||||
else
|
||||
echo "$TARGET_APP 编译成功!耗时: ${MINUTES}分${SECONDS}秒"
|
||||
fi
|
||||
echo "=========================================="
|
||||
else
|
||||
echo "=========================================="
|
||||
if [ -z "$TARGET_APP" ]; then
|
||||
echo "编译失败!耗时: ${MINUTES}分${SECONDS}秒"
|
||||
else
|
||||
echo "$TARGET_APP 编译失败!耗时: ${MINUTES}分${SECONDS}秒"
|
||||
fi
|
||||
echo "=========================================="
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -3,12 +3,7 @@
|
||||
|
||||
TEMPLATE = subdirs
|
||||
|
||||
# 子项目列表
|
||||
SUBDIRS += \
|
||||
ShareMem \
|
||||
BinocularMarkReceiver \
|
||||
ModbusTCPServer
|
||||
|
||||
# 项目依赖关系
|
||||
# BinocularMarkReceiver 依赖 VrUtils(用于网络通信)
|
||||
# ModbusTCPServer 和 ModbusTCPClient 依赖 VrModbus
|
||||
ShareMem/ShareMem.pro \
|
||||
BinocularMarkReceiver/BinocularMarkReceiver.pro \
|
||||
ModbusTCPServer/ModbusTCPServer.pro
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
|
||||
TEMPLATE = subdirs
|
||||
|
||||
SUBDIRS += VrModbus.pro \
|
||||
SUBDIRS += \
|
||||
VrModbus.pro \
|
||||
VrTcpClient.pro \
|
||||
VrTcpServer.pro
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user