目前我正在尝试使用MinGW和Linux的CMake为Windows部署Qt应用程序。我使用MXE来准备构建环境(安装mingw32并编译Qt5共享库)。我编写了CMakeList.txt和一个工具链脚本,他们构建了我的应用程序。
我无法实现的是为我构建的可执行文件提供共享的Qt dll。
这是我的工具链文件: http://pastebin.com/gh7kSda4
这是我的CMakeLists.txt: http://pastebin.com/wHA7f7Sj
以下是该脚本的摘录,其中包含安装部分:
# Installation.
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/${TOOLCHAIN}-Bundle)
install(TARGETS mEyeSaver
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
install(CODE "
include(BundleUtilities)
fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/mEyeSaver${TOOLCHAIN_EXECUTABLE_FORMAT}\" \"\" \"${QT5_PATH}/bin\")
" COMPONENT Runtime)
如您所见,我使用fixup_bundle来实现我的目标。
输入make install
后,我得到以下输出:
http://pastebin.com/DymaH1Mu
之后除了x86_64-w64-mingw32-Bundle
文件夹中的mEyeSaver.exe之外什么都没有。没有复制dll。
我确定~/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin
文件夹中需要Qt dll。但是仍然有一些我做错了。
如何解决问题? 谢谢
我已经重新考虑了我正在做的事情,并且可能fixup_bundle无法分析Windows可执行文件的依赖关系,因为Linux ldd(它使用的)与Windows应用程序无关。所以我编辑了我的问题。
有没有简单的方法可以使用CMake(或者可能是其他工具)为Windows可执行文件获取依赖库而无需直接复制它们?