Qmake generated include path questions/issues
-
I am building a project for the iMX6 and doing a cross compile from a Ubuntu Linux system running in a virtual environment. The system had been working with Qt 5.6.2 and GCC 5.3 which was using the yocto project krogoth release.
Due to some features and issues we decided to update to a newer version of Qt and in doing so we choose to use the yocto project rocko release which gave us access to Qt 5.9.2 and as a result GCC 7.2. This is where the issues appear to be coming in. I have the cross compile sysroots on my system with the versions mentioned. When I try to compile I get the following error:
In file included from /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/boost/config/platform/linux.hpp:15:0, from /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/boost/config.hpp:57, from /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/boost/serialization/vector.hpp:22, from ../../staging/libcoredata/CoreData/ByteBlock.h:8, from ../../staging/libcoredata/CoreData/ByteBlock.cpp:5: /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/c++/7.2.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory #include_next <stdlib.h>
In looking at the Makefile generated from qmake I noticed a difference between the earlier version one and the current one.
Version Generated with 5.6.2
INCPATH = -I../../staging/libcoredata -I. -I/opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include -I/opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/dbus-c++-1 -I/opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/libxml2 -I/opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/c++ -I../../staging/libkit -I/opt/fsl-imx-x11/4.1.15-2.0.1/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++
Version Generated with 5.9.2
INCPATH = -I../../staging/libcoredata -I. -isystem /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include -isystem /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/dbus-c++-1 -isystem /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/libxml2 -isystem /opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/include/c++ -I../../staging/libkit -I/opt/fslc-x11/2.4.1/sysroots/armv7at2hf-neon-fslc-linux-gnueabi/usr/lib/qt5/mkspecs/linux-oe-g++
The difference that I see is in the newer version the -I/opt.... is replaced with -isystem /opt...
The .pri file used to generate the include paths looks like this
INCLUDEPATH += $${QT_SYSROOT}/usr/include INCLUDEPATH += $${QT_SYSROOT}/usr/include/dbus-c++-1 INCLUDEPATH += $${QT_SYSROOT}/usr/include/libxml2 \ $${QT_SYSROOT}/usr/include/c++
Can someone help me understand what the -isystem is doing and whether or not I can get it back to the -I instead to see if that will resolve the issue. I have confirmed that the file exists in my sysroots in the same location as the previous version. Let me know any suggestions that I would need to try and I will let you know what happens. Thanks in advance for the assistance.