Ubuntu上的CMake / Mingw / Qt5找不到stdlib.h

时间:2018-10-10 09:44:13

标签: cmake qt5 mingw

我最近升级了基于Docker的自动构建系统,以使用最新的Ubuntu:

RUN export DEBIAN_FRONTEND="noninteractive" && apt update && apt-get install -y wget g++ build-essential mingw-w64 subversion libmysqlclient-dev libgcrypt20-dev libgmp-dev libsqlite3-dev qt5-default libudev-dev python3.5 python3-lxml
RUN wget https://cmake.org/files/v3.9/cmake-3.9.3-Linux-x86_64.tar.gz
RUN tar zxf cmake-3.9.3-Linux-x86_64.tar.gz
RUN cd cmake-3.9.3-Linux-x86_64 && tar c * | tar x -C /usr

旧系统在这些命令下工作正常。新的不是,MinGW构建失败,编译器抱怨cstdlib中的以下行找不到“ stdlib.h”:

/usr/lib/gcc/i686-w64-mingw32/7.3-win32/include/c++/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
    #include_next <stdlib.h>

我不知道我在旧系统中有什么版本的Qt5和MinGW,但在我构建Xenial时它已经成为标准配置。

我将cmake从手动安装的3.9.3升级到了最新的Ubuntu软件包,并且没有什么区别。

我发现这篇文章很有帮助,但已经过时了:

https://bugzilla.redhat.com/show_bug.cgi?id=1470809

我的解决方案是使用以下更改为Qt5Gui和Qt5Widgets编辑/usr/i686-w64-mingw32/lib/cmake/Qt5Core/Qt5CoreConfig.cmake和类似文件:

<     set(_Qt5Core_OWN_INCLUDE_DIRS "${_qt5Core_install_prefix}/include/" "${_qt5Core_install_prefix}/include/QtCore")
---
>     set(_Qt5Core_OWN_INCLUDE_DIRS "${_qt5Core_install_prefix}/include/QtCore")

即删除包含路径"${_qt5Core_install_prefix}/include/"

虽然可行,但我不愿意接受它作为永久性解决方案。

我的问题是:

  • 这是Qt或MinGW中的错误吗?
  • 如何获得适当的修复程序?

P.s。这不是不使用CMake或Qt的mingw/include/c++/cstdlib: stdlib.h: No such file or directory的重复,并且正如该问题应明确指出的那样,错误的来源在Qt包含的CMake文件中。此外,对该问题的不可接受的答案是设置环境变量。就我而言,我使用的是QtCreator,它负责为我设置环境。


更新:我通过如上所述修改CMake文件解决了这个问题,这种状态一直存在很长时间,它实际上是永久的。我不知道Qt是否已正确修复此问题。

0 个答案:

没有答案