我一直在 Qt Creator 的 Ubuntu 上开发基于 Qt 5 的应用程序。使用的项目格式是 CMake。是时候将这些东西交叉编译成可以在 Windows 上运行的二进制文件了。所以我有
- 安装了 clang 和 mingw-w64
- 创建了一个指向正确工具的 CMake 工具链文件(来自已安装的 MiGW 工具链的工具)并将目标三元组设置为
x86_64-w64-mingw32
(使用此三元组是因为它对应于安装 gcc 工具链的路径)。 mingw64-qt
从https://dl.fedoraproject.org/pub/fedora/linux/development/30/Everything/x86_64/os/Packages/m/开始下载包,解压它们,合并解压的目录,删除任何不需要的东西,修复使它们与系统中的路径相对应的 CMake 脚本(脚本中有一些硬编码的路径)。- 将解压后的 Qt 所需目录的路径添加到工具链文件中,以使自动发现工作
- 试图建立。
当我尝试构建时,我的项目的一些文件 (6) 编译得很好,但是 4 导致了令人讨厌的编译错误:
/usr/share/mingw-w64/include/rpcndr.h:64:11: error: reference to ‘byte’ is ambiguous
/usr/share/mingw-w64/include/objidlbase.h:2067:5: error: ‘byte’ has not been declared
好的,我想,也许 Ubuntu 存储库中的 MinGW-w64 已经烂了?事实上,它在 Ubuntu repos 中是 6.0,但在 MinGW-w64 网站上是 8.1。
好的。我已经卸载了这个包,下载了https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1 .0-release-posix-seh-rt_v6-rev0.7z ,解压,设置工具链文件以使用 clang 和 clang++ 作为编译器和 llvm binutils,设置 sysroot 指向解压后的目录,尝试重建...并得到相同的错误(但在新的 sysroot 中)。
好吧,我试图在依赖项和已知可由 g++ - ninja 构建的方面构建一些更简单的东西。
同样的结果。我试过然后 MinGW-w64 工具链(Windows 版本)在 wine 中运行。同样的结果。该死。
一个简单的 hello world 应用程序在所有情况下都可以构建并正常工作。
如何使用 MinGW-w64 stdlib 交叉构建比 Windows 的 hello world 更复杂的应用程序?
另外我想知道如何设置 Qt Creator 以正确使用此工具链。