Избавляемся от предварительно скомпилированных заголовков - PullRequest
1 голос
/ 14 ноября 2009

ОК, у меня есть старый код Metrowerks для Mac и Windows, где предыдущий разработчик использовал предварительно скомпилированные заголовки для каждого проекта, который строит эта база кода.

Как концептуально избавиться от предварительно скомпилированных заголовков?

Вы берете содержимое .pch и перемещаете его в core.h и включаете его во все ваши файлы классов .h?

Я хочу перейти к сборке с помощью CMAKE, и, хотя существуют хаки для работы предварительно скомпилированных заголовков, я думаю, что было бы лучше удалить их зависимости.

Некоторые могут говорить о скорости компиляции, но я не участвую в гонке, у меня уже есть быстрое оборудование, меня больше интересует, как избавиться от предварительно скомпилированных заголовков.

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Был там ... в проекте C ++, где центральный заголовок был включен абсолютно каждой единицей перевода, и, в свою очередь, включал почти каждый существующий заголовок Boost. Хорошо на платформах, где поддерживаются PCH, но мы собираем на некоторых, где их нет, и они взяли возраст . (Как и ваш core.h подход. Не делайте этого, особенно с C ++.)

Итак, вот так:

  • grep для всех включений PCH, и выбросить их (или, более аккуратно, закомментировать их).
  • для каждого модуля перевода, попробуйте собрать и добавить недостающие включения, пока вы больше не получите ошибки компилятора.

Да, это подход грубой силы. К сожалению, я не знаю лучше.

1 голос
/ 14 ноября 2009

Как можно избавиться от предварительно скомпилированных заголовков, концептуально?

Предварительно скомпилированные заголовки являются оптимизацией. Концептуально вы избавляетесь от предварительно скомпилированных заголовков, просто используя вместо них обычные заголовки.

Вы берете содержимое .pch и перемещаете его в core.h и включаете это во все ваши файлы классов .h?

Я знаю программистов, которые делают это. Лично я предпочитаю знать, какие функции я использую и откуда они пришли, поэтому я проверяю, чтобы в каждом файле были все заголовки, необходимые для компиляции этого файла (и только заголовки, необходимые для компиляции этого файла). Опять же, это требует постоянной проверки, если заголовок больше не нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...