2009-10-01 3 views
9

Можно создать дубликат:
Building a subset of boost in windowsКак я могу использовать только одну библиотеку/файл boost?

Я использую Visual C++ 6.0, и я хотел бы использовать boost::random. Я не могу найти примеры, показывающие, как я буду использовать только эту и только эту библиотеку. Могу ли я включить его в свой источник?

+0

Дублирование? http://stackoverflow.com/questions/439402/building-a-subset-of-boost-in-windows – Jacob

ответ

1

Да, большинство форматирующих библиотек - это только заголовок, поэтому вам не нужно компилировать исходные файлы.

2

Большая часть буферов распространяется как библиотеки «только для заголовков» - это означает, что вам не нужно «создавать» любые вещи для использования этой библиотеки. Случайный является одним из таких, поэтому можно просто включить правильные файлы заголовков, и вы будете смеяться. Я бы сказал, что лучше всего получить весь источник ускорения где-то и ссылаться на то, что, поскольку разные части имеют некоторые зависимости друг от друга.

1

Да, чтобы использовать boost::random, вы можете просто включить заголовок в исходный файл.

Поскольку Boost широко использует шаблоны, многие библиотеки реализованы исключительно в заголовках (и файлы реализации шаблона, a la txx).

Большинство библиотек также являются независимыми, поэтому вы можете использовать только один, не зависимо от другого. (Исключения зафиксированы.)

Если вы посмотрите на list of Boost libraries, вы увидите, что многие из них обозначены как «Только заголовок», поэтому нет дополнительной библиотеки для ссылки.

7

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

Мой текущий проект это включает путь:

/I "C:\Program Files\boost\boost_1_39" 

Мой код затем включает в себя подталкивания заголовки, как это:

#include <boost/random.hpp> 

подталкивание/random.hpp имеет кучу линий, как #include " boost/random/linear_congruential.hpp ", поэтому вам нужен путь include.

0

, как бы я идти о только с помощью этого и только этой библиотеки

Я не уверен, что ваша проблема здесь. Даже если вы включили другие заголовки и/или связали другие библиотеки, ваш окончательный исполняемый файл будет включать только те части библиотеки, которые необходимы для разрешения символов в коде. Он не будет использовать неиспользуемые объектные модули. Встроенный код и шаблоны в заголовках не создаются, если они не указаны.

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

22

Boost получил очень хороший инструмент под названием bcp, который делает то, что вы хотите. проверьте это.

из документации:

bcp boost/regex.hpp /foo 

Copies boost/regex.hpp and all dependencies including the regex source code 
(in libs/regex/src) and build files (in libs/regex/build) to /foo. Does not 
copy the regex documentation, test, or example code. 
Смежные вопросы