afsim-2.9.0升级Qt5.15.2
环境Windows 11CMake 4.0.0Visual Studio 2022Qt5.15.2源码目录结构|- afsim-2.9.0-win64|- |- demos|- |- documentation|- |- resources|- |- swdev|- |- |- build-qt|- |- |- dependencies|- |- |- src|- |- |- |- CMakeLists.txt…参考文章AFSIM入门教程03.01Windows下编译AFSIM入门教程索引一、afsim-2.9.0升级Qt5.15.2全部替换qt-5.12.11 为 qt-5.15.2从tools\3rd_party-cmake\qt-5.12.11.cmake 复制tools\3rd_party-cmake\qt-5.15.2.cmake修改tools\3rd_party-cmake\qt-5.15.2.cmakeswdev\src\CMakeLists.txt 添加# 设置Qt根目录 - 这将覆盖swdev_acquire_packages自动设置的值 set(qt_ROOT_DIR D:/Qt/5.15.2/msvc2019_64 CACHE PATH Path to Qt installation FORCE) message(STATUS Qt根目录已设置为: ${qt_ROOT_DIR})或者直接在CMAKEGUI中添加swdev\src\tools\3rd_party-cmake\config.cmakeif (usingPackage) set(${pkgBaseName}_ROOT_DIR ${SWDEV_THIRD_PARTY_ROOT}/${pkgname}) include(${CURRENT_LIST_DIR}/${pkg}.cmake) if (${EXE_TARGET_DIRECTORY} STREQUAL ) set_property(GLOBAL APPEND PROPERTY SWDEV_ALL_PACKAGES_USED ${pkgBaseName}) else() set_property(DIRECTORY ${EXE_TARGET_DIRECTORY} APPEND PROPERTY SWDEV_ALL_PACKAGES_USED ${pkgBaseName}) endif() endif()修改为if (usingPackage) # 只有在${pkgBaseName}_ROOT_DIR未设置时才设置它这样可以允许用户在外部覆盖 if(NOT DEFINED ${pkgBaseName}_ROOT_DIR) set(${pkgBaseName}_ROOT_DIR ${SWDEV_THIRD_PARTY_ROOT}/${pkgname}) message(STATUS 自动设置${pkgBaseName}_ROOT_DIR为: ${${pkgBaseName}_ROOT_DIR}) else() message(STATUS 使用用户指定的${pkgBaseName}_ROOT_DIR: ${${pkgBaseName}_ROOT_DIR}) endif() include(${CURRENT_LIST_DIR}/${pkg}.cmake) if (${EXE_TARGET_DIRECTORY} STREQUAL ) set_property(GLOBAL APPEND PROPERTY SWDEV_ALL_PACKAGES_USED ${pkgBaseName}) else() set_property(DIRECTORY ${EXE_TARGET_DIRECTORY} APPEND PROPERTY SWDEV_ALL_PACKAGES_USED ${pkgBaseName}) endif() else() message(STATUS 文件: ${CMAKE_CURRENT_LIST_FILE} 行: ${CMAKE_CURRENT_LIST_LINE} ${pkgBaseName}_ROOT_DIR:usingPackage ${usingPackage}) # 只有在${pkgBaseName}_ROOT_DIR未设置时才设置它这样可以允许用户在外部覆盖 if(NOT DEFINED ${pkgBaseName}_ROOT_DIR) message(WARNING 文件: ${CMAKE_CURRENT_LIST_FILE} 行: ${CMAKE_CURRENT_LIST_LINE} ${pkgBaseName}_ROOT_DIR没有找到${${pkgBaseName}_ROOT_DIR}) else() message(STATUS 使用用户指定的${pkgBaseName}_ROOT_DIR: ${${pkgBaseName}_ROOT_DIR}) include(${CURRENT_LIST_DIR}/${pkg}.cmake) endif() endif()CMAKE中确保QT路径如果使用Release则不用添加BUILD_TYPE、CMAKE_BUILD_TYPE 使用RelWithDebInfo如下CMAKE_BUILD_TYPEswdev\src\wsf_plugins\wsf_oms_uci\source\CMakeLists.txt添加$$CONFIG:RelWithDebInfo:${REL_DLLS}# 2. 修改add_custom_command复制对应配置的DLL到目标目录 add_custom_command(TARGET ${PROJECT_NAME} COMMAND ${CMAKE_COMMAND} -E copy $$CONFIG:Debug:${DBG_DLLS} $$CONFIG:Release:${REL_DLLS} $$CONFIG:RelWithDebInfo:${REL_DLLS} $TARGET_FILE_DIR:${PROJECT_NAME})swdev\src\tools\utilqt\source\UtQtPieChart.cpp包含头文件#include QPainterPathswdev\src\tools\wkf\core\source\WkfViewer.cpp包含头文件#include QKeyEventswdev\src\tools\wkf\common\source\selectors\WkfImageSelectorWidget.cpp包含头文件#include QDragEnterEvent#include QDropEventswdev\src\core\wsf\source\WsfThreadPool.hpp包含头文件#include chronoswdev\src\tools\wkf\plugins\TerrainTools\source\LOS_Ruler.cpp包含头文件#include QPainterPathswdev\src\mystic\plugins\ResultInteractionPlots\source\WaterfallPlot.cpp包含头文件#include QWheelEventswdev\src\warlock\warlock_core\source\WkScriptTypes.hpp包含头文件#include QString#include QDataStreamswdev\src\wizard\lib\source\core\Environment.hpp包含头文件#include QFocusEventswdev\src\warlock\plugins\TrackDetailsDisplay\source\TrackDetailsDisplayDialog.cpp包含头文件#include QKeyEventswdev\src\mover_creator\source\ConvertBrawlerAircraftDialog.cpp// TODO:ERROR//geometryObject[0] vehicleMassObject;geometryObjectvehicleMassObject;swdev\src\warlock\plugins\DialogBuilder\source\DialogBuilderMainDialog.cpp包含头文件#include QDragEnterEvent#include QDropEventswdev\src\wizard\plugins\PatternVisualization\source\PatternPolarPlotLayer.cpp包含头文件#include QPainterPathswdev\src\core\sensor_plot_lib\source\HorizontalMapFunction.cpp加上std::swdev\src\mystic\plugins\ResultTimeController\source\RvTimeControllerToolbarWidgets.cpp包含头文件#include QMouseEventswdev\src\wizard\plugins\PatternVisualization\source\PatternPolarPlotLayer.hpp包含头文件#include QPainterPathswdev\src\warlock\plugins\SixDOF_Tuner\source\TunerMainWidget.cpp和swdev\src\mover_creator\source\ScriptGeneratorRigidBodySixDOF.cpp和swdev\src\mover_creator\source\AeroLiquidRocketEngine.cpp和swdev\src\mover_creator\source\AeroJetEngine.cpp和swdev\src\mover_creator\source\AeroRamjetEngine.cpp和swdev\src\mover_creator\source\ScriptGeneratorPointMassSixDOF.cpp和swdev\src\mover_creator\source\AeroSolidRocketEngine.cpp和swdev\src\mover_creator\source\BrawlerConverter.cpp和swdev\src\mover_creator\source\VehicleLandingGear.cpp和swdev\src\mover_creator\source\ScriptGeneratorSixDOF.cpp替换swdev\src\mover_creator\source\SolidRocketEngineWidget.cpp#ifQT_DEPRECATED_SINCE(5,15)connect(mUIPtr-specificationsComboBox,QComboBox::textActivated,this,SolidRocketEngineWidget::HandleSpecificationsComboBoxChanged);connect(mUIPtr-massComboBox,QComboBox::textActivated,this,SolidRocketEngineWidget::HandleMassComboBoxChanged);connect(mUIPtr-altitudeComboBox,QComboBox::textActivated,this,SolidRocketEngineWidget::HandleAltitudeComboBoxChanged);connect(mUIPtr-propellantMassComboBox,QComboBox::textActivated,this,SolidRocketEngineWidget::HandlePropellantMassComboBoxChanged);#elseconnect(mUIPtr-specificationsComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::activated),this,SolidRocketEngineWidget::HandleSpecificationsComboBoxChanged);connect(mUIPtr-massComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::activated),this,SolidRocketEngineWidget::HandleMassComboBoxChanged);connect(mUIPtr-altitudeComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::activated),this,SolidRocketEngineWidget::HandleAltitudeComboBoxChanged);connect(mUIPtr-propellantMassComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::activated),this,SolidRocketEngineWidget::HandlePropellantMassComboBoxChanged);#endifswdev\src\mover_creator\source\ControlsWidget.cpp#ifQT_DEPRECATED_SINCE(5,15)connect(mUIPtr-mActivePilotComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ControlSystemTypeChanged(mUIPtr-mActivePilotComboBox-itemText(index));});connect(mUIPtr-mControlSystemTypeComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ControlSystemTypeChanged(mUIPtr-mControlSystemTypeComboBox-itemText(index));});connect(mUIPtr-mYawControlComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mWeaponYawControlComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mWeaponRollControlComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mRollControlSurfacesComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mWeaponRollControlSurfacesComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});#elseconnect(mUIPtr-mActivePilotComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mControlSystemTypeComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ControlSystemTypeChanged);connect(mUIPtr-mYawControlComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mWeaponYawControlComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mWeaponRollControlComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mRollControlSurfacesComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mWeaponRollControlSurfacesComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);#endif....#ifQT_DEPRECATED_SINCE(5,15)connect(mUIPtr-mControlSystemTypeComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mYawControlMappingComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mPitchControlMappingComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});connect(mUIPtr-mRollControlMappingComboBox,QOverloadint::of(QComboBox::currentIndexChanged),[](intindex){this-ValueChanged();});#elseconnect(mUIPtr-mControlSystemTypeComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mYawControlMappingComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mPitchControlMappingComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);connect(mUIPtr-mRollControlMappingComboBox,static_castvoid(QComboBox::*)(constQString)(QComboBox::currentIndexChanged),this,ControlsWidget::ValueChanged);#endifswdev\src\mover_creator\source\PerformanceWidget.cpp#ifQT_DEPRECATED_SINCE(5,15)curItem-setSelected(true);#elsemUIPtr-performanceTestTreeWidget-setItemSelected(curItem,true);#endif....#ifQT_DEPRECATED_SINCE(5,15)curItem-setSelected(false);#elsemUIPtr-performanceTestTreeWidget-setItemSelected(curItem,false);#endifswdev\src\wizard\plugins\OSMConverter\source\OSMConverterDataContainer.hpp#if!QT_DEPRECATED_SINCE(5,15)namespacestd{templatestructhashQString{std::size_toperator()(constQStringaString)const{returnqHash(aString);}};}// namespace std#endifswdev\src\wizard\lib\source\map\Platform.cpp#if!QT_DEPRECATED_SINCE(5,15)namespacestd{templatestructhashQString{std::size_toperator()(constQStrings)const{returnqHash(s);}};}// namespace std#endifswdev\src\tools\wkf\core\source\WkfEnvironment.hpp/** * brief 获取演示目录路径 * return QString 演示目录路径 * note 演示目录位于源代码根目录的上级目录的demos文件夹 */#if0QStringGetDemosDir()const{returnQString::fromStdString(mSourceRoot)/../demos;}#else//QString GetDemosDir() const { return (mSourceRoot.empty() ? mResourcesDir : QString::fromStdString(mSourceRoot) ) /../demos; }QStringGetDemosDir()const{returnmResourcesDir/../demos;}#endif二、编译CMakeTargets/ALL_BUILDCMakeTargets/INSTALL三、使用swdev\build-qt\wsf_install\bin 拷贝所以到运行目录swdev\build-qt\RelWithDebInfo 或者 swdev\build-qt\Release拷贝资源文件demos、documentation、resources 运行目录的上层swdev\build-qt\设置applications/wizard 设置为启动项目二、编译CMakeTargets/ALL_BUILDCMakeTargets/INSTALL三、使用swdev\build-qt\wsf_install\bin 拷贝所以到运行目录swdev\build-qt\RelWithDebInfo 或者 swdev\build-qt\Release拷贝资源文件demos、documentation、resources 运行目录的上层swdev\build-qt\设置applications/wizard 设置为启动项目

相关新闻

10分钟上手Revo:Todo示例应用带你快速掌握事件驱动开发

10分钟上手Revo:Todo示例应用带你快速掌握事件驱动开发

10分钟上手Revo:Todo示例应用带你快速掌握事件驱动开发 【免费下载链接】Revo Event Sourcing, CQRS and DDD framework for C#/.NET Core. 项目地址: https://gitcode.com/gh_mirrors/revo/Revo Revo是一个基于C#/.NET Core的事件溯源(Event Sou…

2026/7/27 4:39:18 阅读更多 →
macOS用户必看:解决Typstudio首次运行的“开发者无法验证”问题

macOS用户必看:解决Typstudio首次运行的“开发者无法验证”问题

macOS用户必看:解决Typstudio首次运行的“开发者无法验证”问题 【免费下载链接】typstudio A W.I.P desktop application for a new typesetting language, typst. 项目地址: https://gitcode.com/gh_mirrors/ty/typstudio Typstudio是一款针对新型排版语言…

2026/7/28 3:38:56 阅读更多 →
【AI写作故事创作黄金法则】:20年资深内容架构师亲授5大不可逆的叙事引擎模型

【AI写作故事创作黄金法则】:20年资深内容架构师亲授5大不可逆的叙事引擎模型

更多请点击: https://intelliparadigm.com 第一章:AI写作故事创作的底层认知革命 传统故事创作长期依赖人类经验、情感直觉与线性叙事逻辑,而AI写作的兴起并非简单替代作者,而是触发一场关于“创作本体”的范式迁移——从“作者中…

2026/7/28 9:51:15 阅读更多 →

最新新闻

WebSocket实时通信在金融竞价系统的实践与优化

WebSocket实时通信在金融竞价系统的实践与优化

1. WebSocket实时通信的核心价值与应用场景WebSocket协议作为HTML5规范的一部分,已经成为现代实时通信系统的基石。相比传统的HTTP轮询机制,它通过一次握手建立持久连接,实现全双工通信,特别适合需要高频数据交换的场景。在金融交…

2026/7/28 21:49:52 阅读更多 →
多语言提示词工程:架构设计与实战优化

多语言提示词工程:架构设计与实战优化

1. 多语言翻译在提示词工程中的核心价值 在全球化数字产品的开发过程中,多语言支持已成为基础需求。作为提示词工程师,我们经常需要处理这样的场景:一套核心业务逻辑需要适配英语、中文、西班牙语等数十种语言版本。传统做法是为每种语言单独…

2026/7/28 21:49:52 阅读更多 →
如何构建企业级VS Code更新管理策略:从零到一实战指南

如何构建企业级VS Code更新管理策略:从零到一实战指南

如何构建企业级VS Code更新管理策略:从零到一实战指南 【免费下载链接】vscode Visual Studio Code 项目地址: https://gitcode.com/GitHub_Trending/vscode6/vscode Visual Studio Code(简称VS Code)作为现代开发者的首选编辑器&…

2026/7/28 21:49:52 阅读更多 →
DSView终极指南:从零开始掌握开源信号分析工具

DSView终极指南:从零开始掌握开源信号分析工具

DSView终极指南:从零开始掌握开源信号分析工具 【免费下载链接】DSView An open source multi-function instrument for everyone 项目地址: https://gitcode.com/gh_mirrors/ds/DSView DSView是一款开源多平台信号分析工具,为电子工程师和嵌入式…

2026/7/28 21:49:52 阅读更多 →
Photon光影包:如何让你的Minecraft世界焕发真实光影的终极指南

Photon光影包:如何让你的Minecraft世界焕发真实光影的终极指南

Photon光影包:如何让你的Minecraft世界焕发真实光影的终极指南 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon 想象一下,你的Minecraft方块世界突然拥有了电影…

2026/7/28 21:49:52 阅读更多 →
碧蓝幻想Relink玩家必备:如何用GBFR-Logs将战斗数据转化为实战优势

碧蓝幻想Relink玩家必备:如何用GBFR-Logs将战斗数据转化为实战优势

碧蓝幻想Relink玩家必备:如何用GBFR-Logs将战斗数据转化为实战优势 【免费下载链接】gbfr-logs GBFR Logs lets you track damage statistics with a nice overlay DPS meter for Granblue Fantasy: Relink. 项目地址: https://gitcode.com/gh_mirrors/gb/gbfr-lo…

2026/7/28 21:48:51 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻