【发布时间】:2018-02-17 12:45:07
【问题描述】:
我有一台 Ubuntu 构建机器。
我希望使用已安装的 MinGW 交叉编译 Windows。
我正在编译 QT 应用程序(恰好是 QT5)。
我正在使用 CMake。
本机构建开箱即用,但交叉编译非常失败,因为 CMake 找不到 FindPackage 使用的文件。为了解决这个问题,我将所有 QT 库文件、头文件、cmake 文件和 shared/qt5 下的文件从 MSYS2 MinGW/QT5 安装(运行良好)复制到我的 Ubuntu 构建机器上的相关 MinGW 文件夹中。我还象征性地将“qmake”、“rcc”、“moc”和“uic”的本机二进制文件链接到正确的位置,因为 QT5 cmake 文件似乎正在寻找它们。我想我应该编辑 cmake 文件以查找具有目标系统前缀的二进制文件,并重命名符号链接,但我很懒。
CMake 现在成功了,但是当我尝试“制作”我的程序时,我从“moc”收到以下错误:
moc: could not find a Qt installation of ''
我猜我缺少一两个环境变量。
理想情况下,我想要一个解决方案,它指定一些预构建的 Ubuntu 软件包,我可以安装这些软件包,以便使用 MinGW 在 Linux 上编译适用于 Windows 的 QT 应用程序,但坦率地说,任何工作都会很棒。
【问题讨论】:
-
你看过mxe吗?它应该涵盖您的所有用例。
-
MinGW 是“Minimalist GNU for Windows”的缩写,是原生 Microsoft Windows 应用程序的极简开发环境。 Linux 上不需要 MinGW,因为那里有普通的 GNU。
-
@AlexanderVX:如果你想在 Linux 上为 Windows 构建,你确实需要它。事实上,我想不出任何其他方式在 Linux 上为 Windows 构建。请告诉您是否可以想到一个。
-
@MateoConLechuga:这看起来很有趣。不过,我不确定它与我们现有的构建环境的兼容性如何。我回去工作时会检查一下。谢谢!