|
execoma
новенький
Сказали спасибо: +1/-0
Offline
Сообщений: 2
|
|
Ускорение компиляции (8 минут!!! спасите!!!)
« : 23 Ноябрь 2014, 22:16:37 »
|
|
Здравствуйте, Коллеги!
Исходные данные:
Очень большой проект, сотни модулей. Среда C++ Builder XE Starter. Подключено очень много дополнительных компонентов (DevExpress, TMS, DevArt, TRichView и другие). Процессор Intel Core i5 2500К.
Проблема:
Компиляция занимает до 8 минут !!! Из-за этого не только невозможно войти в состояние потока, а в принципе работать просто невозможно!!! Полагаю, что компилятор ведет себя некорректно каждый раз делая полную перекомпиляцию после того, как вносится изменение в любой header файл или добавляется/удаляется компонент на форме. Ведь другие модули не трогаются, а он перекомпилит весь проект. Если вносить правки в CPP-файлы, то перекомпилится только измененые модули. Возможно есть какая-та настройка в настройках компилятора, но я не знаю какая, чтобы он реже делал полную перекомпиляцию.
Попытки решения:
Я рассматривал общие принципы ускорения компиляции, но это все не то, нужно именно решить проблему с неправильным поведением компилятора. Я уже предвскушаю как мне постоветуют предкомпилированные заголовки и тулзу для распаралеливания компиляции, поэтому отпишусь, что у меня с этим вышло:
1. Предкомпилированные заголовки используются для vcl.h, а для сторонних компонентов их не удается использовать, т.к. ими автоматом прописываются либы в header файлах, в которых простановка #pragma hdrstop не работает (если я правильно понял, то предкомпилированные заголовки не могут прописываться в h-файлах). Если предкомпилированные заголовки и дают какую-то выгоду для vcl.h, то очень незначительную.
2. Компиляция у IDE идет только на одном ядре, поэтому существует средство распаралеливания компиляции модулей IDECompilerSpeedFix, оно уже давно устарело, не развивается и не работает под XE.
3. Разбиение программы на отдельные модули достаточно проблемная задача.
Поэтому пока устроило бы решение с настройки компилятора для уменьшения числа полных перекомпиляций. Помогите, пожалуйста.
Также интересно в XE2-XE7 эта проблема решена или нет.
|