Включение соответствующих библиотек повышения с источником C++ (с использованием Visual Studio)

У меня есть проект, над которым я работаю (для школы), который я копаю в библиотеках 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 ответов

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

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

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

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

Попробуйте вызвать 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 это имя модуля, второй каталог назначения.

О, и если вы еще не заметили, есть файлы сборки Visual C++ в libs\regex\build\,

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

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

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

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

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

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

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

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

Другие вопросы по тегам