MXE Qt5应用程序构建在Docker容器中失败

时间:2018-06-25 16:06:42

标签: c++ docker qt5 mxe

因此,我已经在Docker容器(基于Ubuntu 18.04)中成功构建了MXE和Qt5(make qt5),并在/opt/mxe中复制了内容,并在PATH后面附加了{{1 }}。

但是,当我尝试在容器内构建Qt5应用程序时,qmake和CMake均失败。由于某些原因,Qt工具无法正常工作。这是qmake的输出:

/opt/mxe/usr/bin

资源编译器找不到任何东西。

CMake构建失败,如下所示:

# i686-w64-mingw32.static-qmake-qt5 ../heimer.pro 
Project MESSAGE: Building for Qt version 5.11.1.
Project MESSAGE: Building for Qt version 5.11.1.
Project MESSAGE: Building for Qt version 5.11.1.
RCC: Error in '../data/icons/icons.qrc': Cannot find file 'heimer.png'
RCC: Warning: No resources in '../data/icons/icons.qrc'.
RCC: Error in '../data/images/images.qrc': Cannot find file 'about.png'
RCC: Error in '../data/images/images.qrc': Cannot find file 'add.png'
RCC: Error in '../data/images/images.qrc': Cannot find file 'colors.png'
RCC: Warning: No resources in '../data/images/images.qrc'.
RCC: Error in '../data/translations/translations.qrc': Cannot find file     'heimer_fi.qm'
RCC: Warning: No resources in '../data/translations/translations.qrc'.
RCC: Error in '../data/icons/icons.qrc': Cannot find file 'heimer.png'
RCC: Warning: No resources in '../data/icons/icons.qrc'.
RCC: Error in '../data/images/images.qrc': Cannot find file 'about.png'
RCC: Error in '../data/images/images.qrc': Cannot find file 'add.png'
RCC: Error in '../data/images/images.qrc': Cannot find file 'colors.png'
RCC: Warning: No resources in '../data/images/images.qrc'.
RCC: Error in '../data/translations/translations.qrc': Cannot find file 'heimer_fi.qm'
RCC: Warning: No resources in '../data/translations/translations.qrc'.

让我们检查容器内的Qt配置:

# i686-w64-mingw32.static-cmake --build .
== Using MXE wrapper: /opt/mxe/usr/bin/i686-w64-mingw32.static-cmake
== Skip using MXE toolchain: /opt/mxe/usr/i686-w64-mingw32.static/share/cmake/mxe-conf.cmake
Scanning dependencies of target heimer_autogen
[  1%] Automatic MOC for target heimer

AutoMoc subprocess error
------------------------
moc failed for "/heimer/src/nodehandle.hpp"

Command
-------
/opt/mxe/usr/i686-w64-mingw32.static/qt5/bin/moc -I/heimer/build-mxe-cmake-docker/src -I/heimer/src -I/heimer/build-mxe-cmake-docker    /src/heimer_autogen/include -I/heimer/src/contrib -I/heimer/build-mxe-cmake-docker -I/opt/mxe/usr/i686-w64-mingw32.static/qt5/include -I/opt/mxe/usr/i686-w64-mingw32.static/qt5/include/QtWidgets -I/opt/mxe/usr/i686-w64-mingw32.static/qt5/include/QtGui -I/opt/mxe/usr/i686-w64-mingw32.static/qt5/include/QtCore -I/opt/mxe/usr/i686-w64-mingw32.static/qt5/./mkspecs/win32-g++ -I/opt/mxe/usr/i686-w64-mingw32.static/qt5/include/QtXml -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_XML_LIB "-DVERSION=\"0.0.0\"" -o /heimer/build-mxe-cmake-docker/src/heimer_autogen/EWIEGA46WW/moc_nodehandle.cpp /heimer/src/nodehandle.hpp

Output
------
/heimer/src/nodehandle.hpp:28: Error: Undefined interface

似乎还可以。

当然,无论有没有MXE以及qmake和CMake,我的应用程序都能在我的主机上完美编译。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用--privileged运行docker容器解决了该问题。