Здравствуйте, SleepyDrago, Вы писали:
SD>Здравствуйте, _hum_, Вы писали:
__>>Не совсем понимаю, как разрабатываются большие проекты на С++? У меня он пока средний — около 2 Mb в архиве, и уже сейчас время перекомпиляции — около 20 минут (на двухядерном 2ГГц и 4Г памяти) ...
__>>Разработчики языка вообще в эту сторону смотрят?
SD>Компиляция больших с++ проектов это решенная инженерная задача. Просто, никто не делится решениями.
SD>Для интерактивной сборки разработчики используют 1-2 конфигурации. В них
| | текст |
| | SD>а) все разбито на бинарные модули (убирает линковку всего вместе), даже если финальная сборка это 1 исполняемый файл;
SD>б) в каждом модуле есть forward declarations где разрешен только небольшой набор типов.
SD>в) в каждом модуле есть pch
SD>г) автоматически мелкие cpp файлы объединяются группами (unity build), в теме был пример как это делать руками;
SD>д) компиляция запускается на кластере из множества машин (даже если это только машины коллег это все равно дает много);
SD>е) используется кеш с результатами компиляции (заполняется чистым билдом ночью).
SD>... |
| | |
ну так, это же "ужас-ужас-ужас" — превращать подготовку к компиляции в отдельную инженерную задачу. эдак со временем стоит ожидать появления "специалиста по предкомпиляционной подготовке с++ проекта".
SD>в домашних условиях обычно никто не идет дальше первых трех пунктов и просто дозакупают железо тк "(на двухядерном 2ГГц и 4Г памяти)" бороться за время компиляции несерьезно.
я ж вам при вел пример — в "домашних условиях" на не слишком большом проекте на перекомпиляцию тратится 20-40 минут, что при разработке — непозволительная потеря времени.
SD>Настоящие неудобства большие/сложные проекты приносят, когда надо туда заливать большие изменения а не при компиляции =)
по-моему, эти проблемы ортогональны