MAWHA / maa-whmx

基于 MaaFramework 与 Qt6 的物华弥新一键长草小助手 | 通用 MAA PC 端极速预备中!
Apache License 2.0
66 stars 2 forks source link

Vcpkg 构建的 Qt 在部署时会丢失间接依赖的动态库 #14

Closed zymelaii closed 2 weeks ago

zymelaii commented 2 weeks ago

如插件 imageformats/qjpeg.dll 依赖于 jpeg62.dll,而 windeployqt 不会一并部署 jpeg62.dll,最终导致插件加载失败。

SineStriker commented 2 weeks ago

qwindowkit 里的 qmsetup 工具可以帮忙,只需要在现有工程中增加以下几步。

  1. CMake Configure 参数添加-DQMSETUP_APPLOCAL_DEPS_PATHS_RELEASE=<dir>\vcpkg_installed\x64-windows\bin
  2. whmx-assistant下的 CMakeLists.txt 末尾添加
    find_package(qmsetup REQUIRED)
    qm_import(Deploy)
    qm_deploy_directory("$<TARGET_FILE_DIR:whmx-assistant>"
    LIBRARY_DIR . PLUGIN_DIR . VERBOSE
    )    
  3. build 完成后需要执行 install,install 时上述命令会自动收集所有$<TARGET_FILE_DIR:whmx-assistant>目录下所有 dll 与 exe 的依赖并一直递归解析,最后将依赖拷贝到LIBRARY_DIR里,QMSETUP_APPLOCAL_DEPS_PATHS_RELEASE是用来指定参考目录的,如果是 Debug 版本则指定QMSETUP_APPLOCAL_DEPS_PATHS_DEBUG=<dir>\vcpkg_installed\x64-windows\debug\bin