Я рассматриваю возможность использования CMake для проектов, ориентированных на микроконтроллер. Я узнал, как создать файл toolchain и вызвать cmake -DCMAKE_TOOLCHAIN_FILE=Path/To/Toolchain.cmake
, чтобы заставить CMake выполнять кросс-компиляцию.Можно ли создавать бинарные файлы для разных целей с помощью CMake?
Однако большинство проектов, над которыми я работаю, также имеют код, который должен быть скомпилирован для платформы хоста. Это часто модульные тесты или другие тестовые инструменты, которые разделяют большую часть своего кода с двоичным кодом, который будет работать на микроконтроллере. Редким случаем может быть проект, в котором даже есть два процессора с разными архитектурами команд, поэтому ему нужен компилятор хоста и два разных кросс-компилятора.
Я хотел бы иметь одну сборку, которая будет управлять ими всеми. Возможно ли иметь конструкцию, которую мне нужно только позвонить cmake /path/to/source && make
, или это единственное решение, имеющее несколько файлов «root» CMakeList.txt
, каждый для каждой цели?
Спасибо вам за ответ. Я пробовал это, и он работает более или менее, но чувствует себя не очень тонко. Одна из основных проблем, с которыми я сталкиваюсь сейчас, заключается в том, что когда вы вызываете «master» make после внесения изменений в один из подпроектов, эти изменения не будут восстанавливаться. Вы должны использовать 'cd' в каталоге сборки subproject и называть' make' там сами. – Bart
@Bart Это действительно разочаровывающее ограничение. Внешние проекты не должны регулярно меняться, поэтому нет явной поддержки для этого сценария (по крайней мере, об этом я знаю). – ComicSansMS