Я только что преобразовал проект Objective-C (++) в простой C ++.Перемещая все больше и больше кода, я заметил, что время сборки значительно увеличилось.
Мой проект в настоящее время разделен на несколько фреймворков / dylibs и основной проект, использующий эти фреймворки.
Я провел некоторое исследование и обнаружил, что в основном рекомендуется сократить время сборки на три вещи:
- уменьшение зависимостей заголовка
- при использовании единственных сборок
- с использованием такого инструмента, какccache, чтобы не повторять ненужную работу все время
Я реализовал ccache, и он прекрасно работает, и мне удалось немного сократить время сборки.
Я немного не уверен насчет уменьшения зависимостей заголовка и построения единиц.Я читал, что большой недостаток Unity builds заключается в том, что вам нужно перекомпилировать все, если вы вносите изменения в один исходный файл, что имеет смысл.Однако это не будет проблемой для фреймворков, так как в любом случае их придется перекомпилировать, если они изменятся.
Я читал, что это плохая практика - использовать "зонтичные заголовки", такие как "MyFramework.h", который будет включатьвсе публичные заголовки данного фреймворка, хотя вам может понадобиться только несколько из них.
Какао везде использует зонтичные заголовки, и это, конечно, намного проще, чем выбирать точные заголовки, необходимые для каждого исходного файла.Тем не менее, при использовании юнит-сборок у меня будет только один заголовок на каждый фреймворк, правильно?
Имеет ли смысл выбирать отдельные заголовки, или использование "зонтичных заголовков" будет в порядке со сборками юнитов?
Нажмите здесь, в темноте, и не хотите тратить время на реализацию техники, которая в конечном итоге не поможет.
Спасибо за вашу помощь!