Я ищу запуск нового проекта на С++ - только в свое время изначально - и я изучаю доступные системы сборки. Казалось бы, ответ "Многие, и все они ужасные".
Функции, которые мне особенно нужны, следующие:
- Поддержка С++ 11
- Кросс-платформа (Linux как главная цель, но способная работать как минимум с Windows)
- Поддержка достойного тестирования модулей.
- Поддержка нескольких модулей для разделения кода
- Поддержка генерации кода (с использованием asn1c или protobuf - еще не на 100%)
- Простота обслуживания
Теперь я знаю, что я могу сделать 1-4 из тех, кто использует CMake и Autotools достаточно легко. Вероятно, также со Сконсом и Вафом и с другими. Проблема в том, что я никогда не разрабатывал, как правильно генерировать код, используя их, - это исходные файлы, которые не существуют до тех пор, пока процесс сборки не будет запущен, поэтому исходные файлы, которые система сборки должна иметь возможность конвертировать в исполняемый код но на самом деле не знает о том, до начала сборки... (ASN1C, в частности, генерирует десятки заголовков и исходных файлов, которые должны работать вместе, а фактический набор файлов зависит от содержимого вашего asn файла). также тот факт, что ни один из них не особенно удобен в обслуживании - у CMake и Autotools есть свой собственный огромный набор сценариев, которые вам нужно для управления, чтобы они работали, а Waf и Scons требуют, чтобы любой, кто работает с ними, имел приличное знание python (I не надо) работать с ними...
Итак - какие системы сборки рекомендуются для чего-то подобного? Или я буду застрять с файлами make и shell-скриптами?