Включение соответствующих библиотек повышения с источником C ++ (с использованием Visual Studio) - PullRequest
5 голосов
/ 28 сентября 2008

У меня есть проект, над которым я работаю (для школы), который я копаю в библиотеках Boost для решений. Мне нужен какой-то способ распространения необходимого исходного кода Boost с моим приложением, чтобы его можно было скомпилировать без установки в систему библиотек, выполняющих компиляцию. (В школьных компьютерах практически ничего не упоминается. Школа только что установила CVS в прошлом году. Но у них есть VS2005)

Примечание. Я использую Visual Studio 2005 в Vista. В моей системе установлен Boost 1.34.1. Я использовал автоматический установщик . Документация, с которой я столкнулся, говорит об использовании команды BCP, но эта команда, похоже, ничего не копирует. (Я использую абсолютный путь для вызова BCP, поэтому я не заканчиваю тем, что вызываю неправильную команду.)

Редактировать: я пытаюсь использовать библиотеки RegEx.

Редактировать: команда, которую я использую для BCP: "c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" boost/regex.hpp regex\

И он возвращает: no errors detected

Ответы [ 6 ]

5 голосов
/ 28 сентября 2008

Это зависит от используемой вами библиотеки. Если вы используете библиотеку только с заголовками (большинство библиотек надстройки, некоторые заметные исключения - это сигналы, сериализация и дата / время), вы можете просто скопировать эти файлы заголовков. В противном случае вам также необходимо скопировать файлы cpp. Я предлагаю просто включить их в свой проект.

Итак, вот что вы делаете: вы удаляете путь ускоренного включения из настроек вашего проекта (инструмент-> опции-> проекты и решения-> каталоги vc ++-> включаемые файлы). Попробуй скомпилировать. Посмотрите, что включить не удается. Скопируйте этот файл из вашего каталога Boost в каталог вашего проекта. Вспени, промой, повторяй, пока твой проект не скомпилируется.

Если вы используете библиотеку, для которой требуются файлы .cpp, вы получите сообщение об ошибке во время ссылки. Скопируйте все файлы .cpp используемой вами библиотеки в каталог проекта и добавьте их в свое решение. Восстановите и скрестите пальцы.

Для более подробного ответа, пожалуйста, опубликуйте, какие библиотеки вы используете.

2 голосов
/ 29 сентября 2008

Исходя из вашего комментария о том, что вы используете regex, вот что вы делаете: скачиваете «нормальный» буст-дистрибутивный zip-файл. Распакуйте его куда-нибудь. Перейти к libs / regex / src. Скопируйте и вставьте все файлы .cpp из этого каталога в каталог вашего проекта. Добавьте их в ваш проект Visual Studio (щелкните правой кнопкой мыши, «добавить» -> «существующий элемент»). Затем перейдите в boost / regex и скопируйте все содержимое (файлы заголовков) в каталог вашего проекта (включая подкаталоги). Измените все включения в ваших собственных файлах .cpp и .h с #include на "regex.hpp", чтобы он включал заголовки из вашего локального каталога, а не те, которые были установлены в масштабе всей системы. Обязательно удалите общесистемный путь включения из настроек вашего проекта, как я уже говорил в моем последнем сообщении.

Затем скомпилируйте свой код. Вы получите ряд ошибок «отсутствует включаемый файл», поскольку регулярное выражение зависит от других библиотек надстройки. Повторите весь процесс: перейдите к boost / xxx, где xxx - это библиотека, которую ищет регулярное выражение. Вы можете вывести библиотеку из сообщения об ошибке. Скопируйте все, что запрашивает компилятор, в свой каталог проекта. Возможно, вам придется немного поработать с макетом каталога, прежде чем он заработает. Это действительно пошаговый подход, в котором каждый шаг одинаков: определите отсутствующий файл, скопируйте его, посмотрите, найдено ли это исправление, и перейдите к следующему шагу. Боюсь, это скучная работа.

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

2 голосов
/ 29 сентября 2008

Попробуйте вызвать bcp с этой командой:

"c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" --boost="c:\Program Files\boost\boost_1_34_1" regex regex

--boost сообщает bcp, где установлен boost, первое regex - это имя модулей, второе - каталог назначения.

О, и если вы еще не заметили, в libs\regex\build\.

есть make-файлы Visual C ++
1 голос
/ 28 сентября 2008

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

0 голосов
/ 21 августа 2009

Это такая PITA для компиляции boost; только мотивированные студенты смогут это сделать. Рассматривали ли вы комплектацию установщика?

0 голосов
/ 28 сентября 2008

Я сталкивался с этим раньше, встраивая поддержку в свои проекты. Каждая отдельная библиотека Boost поставляется с различными проектными файлами для сборки с разными системами изготовления (Jam, make, Visual Studio 6 ...), но они никогда не были так хороши с новыми версиями VS.

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

Как только вы это сделаете, вы можете распространять библиотеки надстроек, как и любые другие файлы в вашем проекте.

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