DicomViewer24 修复编译bug(window test 失败)

背景

上一篇mpr的推到GitHub上,本来以为不会有啥问题,结果ci打包的失败了。这一篇是解决问题的。

正文

git ci 失败

从流程来看,是Windows build就失败了。

追踪日志,结论是生成test的超时了。。但是如果直接补超时时间不一定能解决问题,还是得在Windows下编译才能知道是不是超时导致的

window cmake 插件编译

因为上面的bug是在Windows下编译出现的,先解决Windows下编译的。 之前因为都是wsl下,然后Windows下只用了脚本编译,这一次使用了vscode的插件cmake编译

一开始尝试环境变量,结果没生效,可能是到vscode的cmake这一次继承的环境变量有问题(用的系统变量设置的,重启也无效,从控制台输出环境变量是正常),最终直接在CMakePresets.json写死了,如下所示

bash 复制代码
   {
      "name": "win-vcpkg-debug",
      "displayName": "Windows vcpkg",
      "description": "Debug build on Windows (x64-windows)",
      "binaryDir": "${sourceDir}/build",
      "generator": "",
      "toolchainFile": "D:/vcpkg/scripts/buildsystems/vcpkg.cmake",
      "environment": {
        "VCPKG_ROOT": "D:/vcpkg"
      },
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_FLAGS": "",
        "VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/triplets",
        "VCPKG_TARGET_TRIPLET": "x64-windows",
        "AUTO_TESTING": "ON",
        "DEPLOY_QT_PLUGINS": "ON"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },

Windows 编译触发

编译过程中会跳出如下窗口

有这弹框,基本上补超时时间是没用了

执行单个的测试来重现

bash 复制代码
D:/xcyxiner/DicomViewer/build/Debug/ViewMode_test.exe --gtest_list_tests

从结果来看,设置超时应该是没用了,缺少类库

给AI输入

复制代码
 从结果来看,是因为你开了无头模式,但是在Windows下,没有找到对应的插件导致的

AI 给的修复意见

拷贝插件并测试

修复过程 CMakeLists.txt 补拷贝方法,生成测试文件前调用

bash 复制代码
# ---- Windows: 自动部署 Qt 插件 ----
# 用整目录拷贝代替逐个 DLL 点名:platforms 里的 offscreen/minimal 等
# 无头插件是测试 (gtest_discover_tests) 在构建期就要加载的,漏拷会导致
# 发现阶段超时;imageformats/styles/generic 供运行时按需加载。
option(DEPLOY_QT_PLUGINS "Auto-copy Qt plugins after build" OFF)
if(WIN32 AND MSVC AND DEPLOY_QT_PLUGINS)
    set(_qt_vcpkg_root
        "${CMAKE_BINARY_DIR}/vcpkg_installed/${VCPKG_TARGET_TRIPLET}")
    # Debug 走 debug 树(DLL 带 d 后缀),其余配置走 release 树
    set(_qt_plugin_tree
        "$<IF:$<CONFIG:Debug>,debug/,>")

    function(_deploy_qt_plugins target)
        foreach(_plugin_cat platforms imageformats styles generic)
            add_custom_command(TARGET ${target} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy_directory
                    "${_qt_vcpkg_root}/${_qt_plugin_tree}Qt6/plugins/${_plugin_cat}"
                    "$<TARGET_FILE_DIR:${target}>/${_plugin_cat}"
                COMMENT "Deploying Qt ${_plugin_cat} plugins ($<CONFIG>)"
            )
        endforeach()
    endfunction()

    _deploy_qt_plugins(DicomViewer_exe)
endif()

重新编译并跑所有的测试

git commit

github.com/xcyxiner/Di...

相关推荐
程序员海军3 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
zttbee4 小时前
echarts图表tooltip色块失效
前端·javascript·echarts
excel5 小时前
IndexNow:让搜索引擎更快发现网站更新的主动通知协议
前端·后端·架构
子兮曰5 小时前
CSS 复现 23 种设计风格:从拟物到液态玻璃的成本阶梯与兜底写法【实战】
前端·css·视觉设计
虚无境6 小时前
如何用AI帮我写出实用的插件
前端·javascript·ai编程
柳杉7 小时前
从数字化到数智化:3D 可视化大屏的下一个五年
前端·ai编程·数据可视化
风骏时光牛马7 小时前
从零到实战:AI全栈学习进阶路线
前端
FRing038 小时前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数
用户360055579008 小时前
Kestrel_VLLM - 15 · decode 优化四连击:19ms → 8ms
前端
IT_陈寒8 小时前
JavaScript的闭包陷阱,这个坑我躺了三天才爬出来
前端·人工智能·后端