OkEDU::构建开发::Windows
必要条件
- 支持系统:Windows 10+
- C++ 版本:C++20
- Qt 版本:Qt 5.15.x
准备工具链环境
Windows 平台编译
目前在Windows 10测试通过,最好在Win10以上系统编译开发。
安装依赖
下载如下依赖库
- Python (3+) https://www.python.org/downloads/
- Perl (latest) https://strawberryperl.com/releases.html
- CMake (latest) https://strawberryperl.com/releases.html
- MinGW64 (latest) https://strawberryperl.com/releases.html
配置环境变量
上一步,安装完依赖程序之后,打开命令行(或者按快捷键CTRL+r运行),输入命令SystemPropertiesAdvanced回车,
设置系统环境变量(用户级和系统级均可),如下
# 在原有PATH之上,增加如下(具体路径根据自己的安装路径修改)
PATH=C:\strawberry-perl\perl\bin;C:\Program Files\CMake\bin;C:\MinGW\bin;
Visual studio MSVC构建
- 安装 Visual Studio 2022(社区版即可)
- 配置选择[桌面开发]
- SDK选择[Windows SDK 10]
准备 Qt 环境
动态和静态都支持
静态 Qt
下载静态版 Qt
由于需要静态版Qt,网上已经有现成编译好的无需自己再浪费时间构建,
位置:https://build-qt.fsu0413.me/,
找到版本5.15.x最新静态64位、静态64位、静态64位版本,
比如我的:Qt5.15.6-Windows-x86_64-VS2019-16.11.18-staticFull-20220915.7z
解压到对应位置即可
放置位置:E:\Qt,比如我的:E:\Qt\Qt5.15.6-Windows-x86_64-VS2019-16.11.18-staticFull
配置环境变量
该步骤就需要配置环境变量指向Qt安装目录,以便于CMake能识别到Qt,请配置环境变量Qt5Static_HOME,方法如下:
# 桌面打开命令行(或者按快捷键CTRL+r运行),输入命令`SystemPropertiesAdvanced`回车
QTDIR=E:\Qt\Qt5.15.6-Windows-x86_64-VS2019-16.11.18-staticFull
动态 Qt
按照Qt安装包正常安装选择:
- msvc64 位运行库即可。
安装相关依赖
构建第三方包
由于本项目依赖众多第三方库,
为了提升项目构建效率,采用了 Conan 包管理工具,操作过程如下:
安装 Conan
Conan提供了Python库支持,安装Python3之后只需执行安装命令即可
2.x 版本因为ffmpeg暂时不支持,请下载v1.x版本
# 卸载最新版(如果已安装)
pip uninstall conan
# 安装 1.x 版本
pip install conan==1.59.0
安装依赖
安装命令如下
这个过程需要需要花费很长时间,由于网络原因可能中断,需要多次执行安装命令等到输出成功消息。
# 静态选项:compiler.runtime=MT 取消强依赖:--build=missing
conan install . -s compiler.runtime=MT --build=missing
准备 WebRTC 库
提供了两种方法选其一即可,参考如下:
- 方法一:下载现成编译好的webrtc库;
- 方法二:下载webrtc源码自行编译(大陆的网络由于某些原因几乎无法下载
极不建议该种方法,外面的同学可以试试!)。
方法一(推荐)
下载对应包,地址如下:
#位置:/okedu/webrtc, 请下载x64版本 https://pan.baidu.com/s/1Q6HGMkbGKzNxaspnSib8BA 提取码: wqp2放置目录,结构如下:
# 如果不存在的目录,请创建。 3rdparty/webrtc/ ├── libwebrtc-windows-x64 │ ├── include │ ├── release
方法二(不推荐)
- 科学配置Proxy修改自己的IP(位于大陆的同学)
# 设置proxy
set HTTP_PROXY=http://{ip}:{port}
set HTTPS_PROXY=http://{ip}:{port}
git config --global http.proxy socks5://{ip}:{port}
git config --global https.proxy socks5://{ip}:{port}
# 取消proxy
set HTTP_PROXY
set HTTPS_PROXY
git config --global --unset http.proxy
git config --global --unset https.proxy
- 下载 depot_tools
#下载depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# 设置环境变量:
set PATh=${depot_tools_dir};%PATH%
# 参考:
https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html
- 下载 WebRTC 源码
# 准备目录
rd /s /q webrtc & mkdir webrtc
# 配置源码repo地址
gclient config --name src https://webrtc.googlesource.com/src
# 这个过程需要多次进行,且易断开
gclient sync
- 执行编译
打开Powershell,执行如下命令:
# gn 配置
/webrtc/src$ gn gen ../out/Release --args='is_debug = false rtc_include_tests = false use_lld = false enable_iterator_debugging = true use_custom_libcxx = false use_custom_libcxx_for_host = false'
# ninja 编译
/webrtc/src$ ../../depot_tools/ninja -C ../out/Release webrtc
# 创建头文件输出目录(/out/include)
New-Item ../out/include -ItemType Directory -Force
# 复制头文件,${WEBRTC_DIR}为webrtc代码目录
robocopy "$WEBRTC_DIR\src" "..\out\include" *.h *.hpp /S /NP /NS /NC /NFL /NDL
- 放置目录,结构如下:
# 如果不存在的目录,请创建。
3rdparty/webrtc/
├── libwebrtc-windows-x64
│ ├── include
│ ├── release
准备 Gloox 库
配置项目
由于项目是基于XMPP协议,Gloox是该协议的实现库,本项目需要对其做了拓展
代码位于OkEDU-Gloox
。 用 visual studio 打开 gloox/gloox.sln 解决方案,右击项目属性,打开配置窗口配置项:
- 目标:Release、x64
- 属性->常规->配置类型:静态库(.lib)
- 属性->高级->目标文件拓展名:.lib
- 属性->C/C++->代码生成->运行库:多线程(/MT)
- 属性->C/C++->预处理器->增加宏定义:HAVE_OPENSSL
- 属性->C/C++->常规->附加包含目录:配置boringssl头文件: ${libwebrtc_dir}\include\third_party\boringssl\src\include
- 属性->C/C++->优化->全程序优化: 否
生成目标
- 方式1(VS)- 打开VS,点击菜单栏 [生成]->[全部生成](或者快捷键Ctrl+b)生成项目;
- 方式2(MSBuild) - 打开 [x64 Native Tools Command Prompt for VS 2022]命令行,cd到代码目录执行
msbuild gloox.vcxproj -property:Configuration=Release即可。 - 导出头文件,执行如下命令。
# 执行拷贝头文件命令
E:\QtWorkspace\ok-edu-gloox>robocopy "src" "x64\include" *.h *.hpp /S /NP /NS /NC /NFL /NDL
# 查看输出目录
E:\QtWorkspace\ok-edu-gloox>dir x64
Directory of E:\QtWorkspace\ok-edu-gloox\x64
2023/05/04 21:42 <DIR> .
2023/05/04 21:42 <DIR> ..
2023/04/27 21:21 <DIR> include
2023/04/22 16:57 <DIR> Release
配置 Gloox 依赖
拷贝gloox生成的依赖放到主项目,位置如下:
E:\QtWorkspace\ok-edu-classroom-desktop\3rdparty\gloox #没有请创建
└── libgloox-windows-x64 #没有请创建
├── include/gloox/*.h #复制所有头文件(x64/include/*.h)到此处
└── release/gloox.lib #复制gloox.lib库文件(x64/Release/gloox.lib去掉版本)到此处
最终3rdparty结构
OkEDU-Classroom-Desktop$ tree -L 4 3rdparty/
3rdparty/
├── gloox
│ └── libgloox-linux-x86_64
│ ├── debug
│ │ ├── libgloox.a
│ └── include
│ └── gloox //gloox 头文件目录
└── webrtc
└── libwebrtc-linux-x86_64
├── debug
│ └── libwebrtc.a
└── include //webrtc 头文件目录
├── api
├── audio
--ignore--
├── tools
└── video
开源地址
相关推荐
YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip
附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。
企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化
企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。
VLOOKUP_fixed.py
VLOOKUP_fixed.py
基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)
内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。
【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)
内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。


