Вот альтернативный ответ, который использует CMake для кросс-компиляции для встроенного ARM с использованием цепочки инструментов GCC, а не clang, а также использует простой старый make, а не Ninja.Я знаю, что это не дает прямого ответа на вопрос, но это очень разумная альтернатива для встроенного ARM, и многие из используемых в настоящее время инструментальных цепочек поставщиков на основе Eclipse основаны на GCC, а не на LLVM / clang.
Сначала установите последний набор инструментов «GNU MCU Eclipse ARM Embedded GCC» из https://github.com/gnu-mcu-eclipse/arm-none-eabi-gcc/releases (ПРИМЕЧАНИЕ: нет установщика, просто разархивируйте его в нужное место).
Затем установите последнюю версию MSYS2 / MinGW с помощьюУстановщик доступен по адресу https://www.msys2.org/.
. По какой-то причине установка MSYS2 по умолчанию не включает make.Итак, после использования pacman для обновления пакетов по умолчанию в соответствии с инструкциями по установке, выполните команду «pacman -S make» для установки make.
В MSYS2 доступна сборка cmake.Тем не менее, он не включает генераторы для MSYS или MinGW (не знаю почему), а также (или из-за), кажется, возникают проблемы с поиском внешнего набора инструментов GCC, даже если полные пути явно указаны в командной строке или в файле набора инструментов,Таким образом, это решение использует встроенную сборку Windows CMake, доступную по https://cmake.org/download/,, а НЕ сборку MSYS2 cmake.
По умолчанию оболочка MSYS НЕ наследует среду Windows, поэтому встроенная WindowsCMake не будет находиться на пути оболочки MSYS.Простое решение - указать полный путь к cmake в командной строке.В моем случае у меня есть набор инструментов для кросс-компиляции GCC в C: / GNU MCU Eclipse / ARM Embedded GCC / 8.2.1-1.4-20190214-0604.Таким образом, полная команда для cmake выглядит следующим образом.
/c/Program\ Files/CMake/bin/cmake.exe -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-arm-none-eabi.cmake "-DTOOLCHAIN_PREFIX=C:/GNU MCU Eclipse/ARM Embedded GCC/8.2.1-1.4-20190214-0604" -G "MSYS Makefiles" ../
Здесь команда выполняется из каталога сборки на один уровень ниже корня проекта, а каталог cmake одноуровневого типа содержит указанный файл цепочки инструментов.Обратите внимание, обратная косая черта необходима для экранирования любых пробелов в пути к cmake.exe, но НЕ используется в путях, указанных в кавычках, передаваемых в качестве аргумента cmake.
Вы также можете запустить cmake и сделать правую из простой старой Windowsкомандной строки (cmd.exe), если каталоги cmake и msys bin включены в путь Windows.В этом случае нет необходимости указывать полный путь к cmake.Однако PowerShell не добился успеха.