Работа с огромным количеством заголовочных файлов Boost - PullRequest
7 голосов
/ 26 июля 2011

Есть ли способ радикально сократить количество заголовочных файлов, необходимых для Boost?

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

Существует ли механизм C ++ для "объединения" тысяч заголовочных файлов в один "пакет" ипросто проверить этот единственный файл в управлении исходным кодом?

Я полагаю, что проблема здесь заключается в управлении исходным кодом. Выполнение различий, svn status и svn checkout так медленно работает со всеми этими файлами.

Ответы [ 5 ]

9 голосов
/ 26 июля 2011

Boost предлагает инструмент под названием BCP . BCP позволяет извлекать подмножества Boost.

Он также может анализировать ваше исходное дерево и извлекать только те компоненты Boost, которые использует ваше исходное дерево.

2 голосов
/ 26 июля 2011

Я бы порекомендовал поместить сторонние библиотеки в отдельный репозиторий. Boost требует большого количества шаблонов, поэтому у них есть веская причина не связывать заголовки. Попытка включить связанные заголовки Boost переместит ваше «потраченное впустую» время из контроля версий в ваши времена сборки. Это на самом деле не масштабируется. Я бы отказался использовать Boost, если бы вы попытались сделать это с моими заголовками Boost.

1 голос
/ 27 июля 2011

ccache может быть спасателем для ускорения тяжелых сборок препроцессора.

0 голосов
/ 26 июля 2011

Не то, что вы просили, но вот способ решить вашу проблему. Насколько я понимаю, вы добавляете файлы Boost в свой репозиторий кода. Зачем? Они не являются частью вашего проекта как такового; они не находятся под вашим контролем .

Вот как я структурирую свои проекты так, чтобы не сталкиваться с подобными проблемами. Все добавляется в систему контроля версий, кроме папок include и lib , как указано ниже. (Я показываю только соответствующие части моего дерева каталогов.)

  • /
    • src & mdash; включает мои собственные исходные файлы и заголовки
    • ext & mdash; внешние зависимости (такие как повышение)
      • подталкивание-1-46-1
        • Download.txt & mdash; включает ссылку, где вы можете скачать правильную версию с
        • включить & mdash; это не добавлено в систему контроля версий
        • lib & mdash; это ни
0 голосов
/ 26 июля 2011

Нет способа упаковать все в один файл (кроме создания версий архива, но это не очень хорошая практика и не практичная вообще).С другой стороны, Subversion, как известно, медлителен при извлечении тысяч небольших файлов, таких как заголовки Boost, поэтому, возможно, вы можете подумать о переходе на высокопроизводительный SCM, такой как Git.

Вас заинтересует BCP , инструмент повышения, который анализирует ваш источник и копирует используемые вами заголовки повышения в отдельный каталог.Это очень помогло уменьшить количество сторонних файлов и в большинстве случаев было правильным в моем случае (мне просто нужно было добавить несколько файлов в список).

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