Я нахожу, что если есть много классов, время компиляции резко увеличивается, когда я использую один * .h и один * .cpp-файл для каждого класса. Я уже использую скомпилированные заголовки и инкрементное связывание, но все время компиляции очень длинное (да я использую импульс;)Уменьшает количество единиц перевода cpp - хорошая идея?
Так что я придумал следующую хитрость:
- определен * .cpp файлов как не -compilable
- определены * .cxx файлы в компилируемый
- добавил один * .cxx файл на приложение модуля и #included все * .cpp файлы этого модуля в нем.
Таким образом, вместо 100 единиц перевода я получил всего 8 единиц перевода. Время компиляции сократилось в 4-5 раз.
Недостатки в том, что вы должны вручную включать все файлы * .cpp (но это не кошмар для обслуживания, так как если вы забудете включить что-то, на которое ссылается компоновщик) и что некоторые удобства VS IDE не работают с этой схемой, например Go To/Move to Implementation и т. Д.
Итак, вопрос в том, имеет ли множество единиц перевода cpp действительно единственный истинный способ? Является ли мой трюк известным шаблоном, или, может быть, я что-то упускаю? Спасибо!
Visual Studio поддерживает связь на уровне функций. Тем не менее, это актуально для Unix/Linux. – MSalters
Будет ли связывание на уровне функций исключать только функции или переменные? – sharptooth