Details
-
Bug
-
Resolution: Invalid
-
Not Evaluated
-
None
-
Qt Creator 4.8.0
Description
The clang code model does not work using a CMake-Project using cross GCC 8.1 as compiler. Using a cross GCC 5 works as expected.
The reason for the issue is caused due to a change in GCCs header files:
GCC5: cstdlib -> #include <stdlib.h>
GCC8: cstdlib -> #include_next <stdlib.h>
I'm using buildroot which provides an CMake-Toolchain-File to set up cross compilation. This file sets CMAKE_SYSROOT which in turn issues --sysroot option to GCC.
This option doesn't seem to be forwarded to Clang in the right way. More precisely: The sysroot directory (and/or it's derived usr/include) is missing in the clang header search path.
The CCM debug output for an example file looks then like this:
#include "..." search starts here:
#include <...> search starts here:
{{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/configs/i5016-zf-imx6}}
{{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/.}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/../../../mkspecs/devices/linux-buildroot-g++}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui}}
{{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/../external}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/opencv}}
{{ /tmp/QtCreator-PwmxQC/clang-uiheader-SkaZdL}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/backward}}
{{ /home/khschneider/opt/qtcreator-4.8.0/libexec/qtcreator/clang/lib/clang/7.0.0/include}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include-fixed}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include}}
End of search list.
/home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/bits/os_defines.h:39:10: fatal error: 'features.h' file not found
/home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/bits/os_defines.h:44:5: error: function-like macro '__GLIBC_PREREQ' is not defined
/home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/iosfwd:76:48: error: no template named 'char_traits'
/home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/iosfwd:79:48: error: no template named 'char_traits'
...
much more errors
As a workaround, I have found the option QTC_CLANG_NO_DIAGNOSTIC_CHECK=1 and add the option -isystem {sysroot}/usr/include manually. (in My case -isystem /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include)
After adding the CCM Option the completion works as excpected:
#include "..." search starts here:
#include <...> search starts here:
{{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/configs/i5016-zf-imx6}}
{{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/.}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/../../../mkspecs/devices/linux-buildroot-g++}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui}}
{{ /home/khschneider/src/firmware/dev/brupdate/zf/pkgsrc/lrc/src/lrctools/../external}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include/opencv}}
{{ /tmp/QtCreator-PwmxQC/clang-uiheader-SkaZdL}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include/c++/8.1.0/backward}}
{{ /home/khschneider/opt/qtcreator-4.8.0/libexec/qtcreator/clang/lib/clang/7.0.0/include}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/lib/gcc/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/8.1.0/include-fixed}}
{{ /home/khschneider/x-tools/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/armv7neon-aug2018_gcc81_glibc226-linux-gnueabihf/include}}
{{ /home/khschneider/src/firmware/dev/brupdate/build/basis-i5016-imx6/host/arm-buildroot-linux-gnueabihf/sysroot/usr/include}}
End of search list.