Почему bcp вычисляет такой большой список зависимостей для Boost program_options? - PullRequest
4 голосов
/ 27 декабря 2010

Я пишу небольшую программу, использующую boost/program_options для обработки параметров из командной строки. Теперь я хочу распространить свой код на системы, где вообще не установлен Boost. Поэтому я использовал утилиту bcp. Я попробовал это на примере из Boost под названием example/first.cpp из учебника program_options :

bcp --scan --boost=/users2/xxx/boost_1_45_0 ~/prova/first.cpp dest

Создает каталог dest с тоннами файлов .hpp и .cpp. Я полагаю, это то, что мне нужно, и не более. Это правильно? Потому что:

du -hs dest
37M dest

Не слишком ли много 37М? Например, я могу сделать то же самое, используя Python с test_optparse.py только с 61KB.

Я что-то не так делаю? Дело в том, что моя исходная программа занимает всего 4 МБ; Я не могу добавить 37 МБ сторонних материалов !!

1 Ответ

3 голосов
/ 27 декабря 2010

В Boost.Documentation есть больше объяснений на эту тему, чем я могу предоставить. В частности:

Следует отметить, что на практике BCP может создать довольно «толстый» список зависимости, причины этого включают в себя:

[...]

  • Когда вы включаете заголовок, bcp не знает, какой вы компилятор используя, поэтому следует все возможное пути препроцессора. Если вы распространение подмножества Boost с вы приложение, то это то, что Вы хотите, чтобы это произошло в общем.

Последний пункт выше может привести к существенному увеличению числа найденных заголовков по сравнению с ожиданиями большинства людей. Например, bcp находит 274 зависимости заголовка для boost / shared_ptr.hpp: , запустив bcp в режиме отчета, мы можем понять, почему все эти заголовки были найдены как зависимости

Я предлагаю вам попробовать bcp --report и проверить причину включения каждого файла, чтобы увидеть, действительно ли это необходимо.

...