Я хочу включить boost::unordered_map
в свой проект, не загружая весь пакет Boost. Как я могу это сделать?Использование Boost unordered_map
ответ
Использование bcp
: http://www.boost.org/doc/libs/1_52_0/tools/bcp/doc/html/index.html
cd $BOOST_DIR
bcp unordered_map /tmp/TEST
Теперь/TMP/TEST содержит только вещи, необходимые для unordered_map
, в моем случае 15Mb (в отличие от 734Mb для полной библиотеки повышающего)
Вам нужны хотя бы заголовки, потому что пакеты Boost зависят друг от друга. Вы можете выбрать только нужные файлы заголовков, но это будет действительно боль в шее и займет у вас много часов. Алгоритм:
- Включить только
boost/unordered_map
. - В то время как препроцессор жалуется на заголовок, который не найден:
- Добавить этот заголовок.
- Перекомпилировать.
Вы в конечном итоге только с необходимыми заголовками. Но я не вижу никаких преимуществ этого решения.
См. Мой ответ, нет необходимости во всех ручных работах. Кроме того, тот факт, что он занимает всего 2% от размера полной библиотеки, вполне может считаться преимуществом этого решения :) – sehe
Ну, вы, сэр, просто избили меня. :) Я понятия не имел, что такой инструмент существует. – Archie
В любом случае, если вы хотите использовать «ручной» подход (который имеет смысл получить минимальный набор _absolute) требуемых заголовков, вам лучше просто запустить источник через препроцессор, а затем что-то вроде 'egrep '^ # [ 0-9] + "'SpiritParser.i | cut -d'" '-f2 | sort -u | grep boost'. Никаких проб и ошибок не требуется. Обратите внимание, что различные флаги компилятора могут приводить к различным результирующим спискам заголовков. – sehe
+1 не знал об этом. Очень удобно. – hmjd