如何使用 CMake 获取 Windows 应用程序的依赖项,同时从 Linux 构建它
How can I use CMake to get dependencies for Windows app while building it from Linux?
目前我正在尝试使用Linux的MinGW和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
之后,除了mEyeSaver.exe之外,x86_64-w64-mingw32-Bundle
文件夹中没有任何内容。未复制任何 dll。我确定~/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin
文件夹中有需要的Qt dll。但我仍然做错了一些事情。
如何解决问题?谢谢
更新
我重新思考了我正在做的事情,并得出了一个点,也许fixup_bundle只是无法分析Windows可执行文件的依赖关系,因为Linux ldd(它使用)与Windows应用程序无关。所以我编辑了我的问题。
有没有简单的方法可以使用 CMake(或其他工具)获取 Windows 可执行文件的依赖项库,而无需直接复制它们?
在上一个 cmake 版本中,有文件GET_RUNTIME_DEPENDENCIES命令可以在安装时获取二进制依赖项。
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 如何在 Linux for Windows 上通过 MinGW 构建静态 ICU 的 Boost
- Arch Linux.AUR 包 mysql 不能用 makepkg 构建.错误:构建 () 中出现故障
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- 调试模板时出现问题.专门针对 Linux GCC 7、GCC 6、GCC 5、GCC 4.9 错误构建失败:模板参数 1
- 在 Linux 上使用 CMake 构建 gRPC C++
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- 如何在 Linux 中构建共享库时使未定义引用的链接器失败
- 构建 C++ Allegro 5 在 Linux Mint QT 上失败
- 如何在 Linux 上构建 wxWidgets 示例
- 有没有一种方法可以在linux中扫描已构建的ARM库中的函数
- 使用静态 Qt 构建在 Linux 上部署 Qt5 应用程序
- 如何从 Linux 控制台使用 CMake 构建 Eclipse C++ 项目(没有可用的 GUI)
- 无法在 Linux 上构建opencv_contrib模块
- mac构建有一个未定义的符号,而linux构建并没有用于相同的代码
- 如何使用 CMake 获取 Windows 应用程序的依赖项,同时从 Linux 构建它
- 如何从Arch Linux构建基本64位Amazon Linux
- Android.mk:为Linux构建库
- devil不使用linux构建加载映像
- Boost-Build:从linux构建windows可执行文件