Прекомпилированный STL с GCC

0

Там код, который включает в себя множество стандартных заголовков библиотек. Код находится в одном файле, и я не могу создать никаких других C++ исходных файлов в этом проекте (sic). Я хотел бы увеличить производительность процесса сборки, используя предварительно скомпилированные заголовки. Есть две проблемы

  1. Пытаясь использовать это руководство по vector, у меня есть file format not recognized. Какие флаги я должен установить, чтобы показать gcc что это заголовочный файл?
  2. Там цитата из официального руководства, в которой говорится: "Только один предварительно скомпилированный заголовок может использоваться в конкретной компиляции". Как предварительно прекомпилировать несколько заголовков?

(Сценарии с пакетом/оболочкой тоже оценены.)

  • 3
    один предварительно скомпилированный заголовок может включать несколько заголовков. так что вы можете включить все заголовки stl в один заголовок и использовать его
Теги:
gcc
stl
precompiled-headers

1 ответ

0

Разве вы не забыли использовать параметр -x для компиляции вашего предварительно скомпилированного заголовка в качестве состояния документации? Затем, если вы хотите, чтобы стандартные шаблоны библиотеки были предварительно скомпилированы - это невозможно по определению. Используя С++ 11, вы можете явно создать некоторые шаблоны в некоторой конкретной единицы перевода для определенных аргументов типа. Из предварительно скомпилированного заголовка вы можете указать

extern template void foo<char>(...)

Как использовать предварительно скомпилированные заголовки, если вы пытаетесь использовать их против шаблонов? Ваш предварительно скомпилированный заголовок должен быть набором других включений/макросов/встроенных функций и всего остального, которые можно безопасно включить в несколько единиц перевода. И все же - только один предварительно скомпилированный заголовок на библиотеку/двоичный файл.

  • 1
    AFAIK, предварительно скомпилированные заголовки не являются единицами перевода. Там нет необходимости во внешних шаблонах.
  • 0
    Опция -x является ответом на первую часть вопроса. Это должно быть похоже на g++ -x c++-header -std=c++11 ...\vector
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню