Всем привет.
По нужде, а не по собственной воле нужно портировать проект на CMake из qmake/qbs. Проект кросс-платформенный на Qt, целевая платформа Apalis iMX6 с BSP Linux, сгенерированном при помощи Yocto. Используется toolchain сгенеренный тем-же Yocto. Хост машина - Ubuntu 18 x86_64.
Путь к toolchain:
/mnt/data/Yocto-miatech/sdks/sysroots/x86_64-pokysdk-linux/
Путь к целевой RootFs:
/mnt/data/Yocto-miatech/sdks/sysroots/cortexa9hf-neon-poky-linux-gnueabi/
В качестве IDE, естественно используется QtCreator 4.8.0, в котором все нужные комплекты настроены правильно (юзаю SDK, сгенеренный Yocto). Проекты, базирующиеся на qmake или qbs компилятся великолепно. Но вот с CMake какая-то ж#@а.
Проект (любой, даже Hello World) открывается корректно (нифига не открывается, сразу после открытия вижу треш), но при попытке кросс-компиляции, CMake вываливает такой треш:
The ASM compiler identification is GNU Found assembler: /mnt/data/Yocto-miatech/sdks/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc The C compiler identification is GNU 6.4.0 The CXX compiler identification is GNU 6.4.0 Check for working C compiler: /mnt/data/Yocto-miatech/sdks/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc Check for working C compiler: /mnt/data/Yocto-miatech/sdks/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc — broken CMake Error at /usr/share/cmake-3.10/Modules/CMakeTestCCompiler.cmake:52 (message): The C compiler
«/mnt/data/Yocto-miatech/sdks/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc»
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /tmp/QtCreator-iobfII/qtc-cmake-wCnOwxuI/CMakeFiles/CMakeTmp Run Build Command:«/mnt/data/Yocto-miatech/sdks/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/bin/make» «cmTC_afb4e/fast» /lib/ld-linux-armhf.so.3: No such file or directory
CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:22 (project)
Configuring incomplete, errors occurred! See also «/tmp/QtCreator-iobfII/qtc-cmake-wCnOwxuI/CMakeFiles/CMakeOutput.log». See also «/tmp/QtCreator-iobfII/qtc-cmake-wCnOwxuI/CMakeFiles/CMakeError.log». CMake Project parsing failed.
WTF?
Какого хрена CMake дергает make, расположенный на RootFs целевой ARM платформы? Естественно, оно не запустится на x86_64! Симлинк 'ld-linux-armhf.so.3' имеется на целевом RootFs и ссылается на валидную либу.
CMake-филы, как вы используете это говно? Как пофиксить?
PS: С qmake и QBS проблем нет, а CMake тупит... Бесит что ппц. :(