CMake под Cortex-M: минимальный, но честный

У меня ушло три года, чтобы написать CMake для embedded, который мне нравится. Делюсь.

Принципы

  • один CMakeLists.txt в корне, и один на каждую библиотеку
  • cross-toolchain через файл, не через переменные окружения
  • linker script — отдельный файл, без хитростей
  • никаких file(GLOB ...)

Минимальный toolchain.cmake

set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_C_FLAGS_INIT "-mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16")

Сборка

cmake -B build -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -GNinja
ninja -C build

Никакой магии. После трёх лет в STM32CubeIDE с его сгенерированными makefile'ами — это как глоток воздуха.

← в архив · → в ленту