Я пытаюсь создать подмножество библиотеки boost, включая модуль файловой системы, чтобы я мог включить это подмножество в свой репозиторий проекта. Я получил ошибку компоновщика, пока я не скопировал файлы .lib вручную. Я использую Visual Studio 2013 на 64-битной Windows 7.
Я успешно извлекла boost /gorithm / string.hpp и его зависимости, используя bcp, выполнив следующие шаги:
Скачано (v 1.57.0) с boost.org.
Извлеченные.
Ран
bootstrap.bat
затем
b2.exe
как описано в Начало работы в Windows.
(Я не знаю, был ли b2 необходим для моих целей.)
Построил инструмент bcp, открыв командную строку, где я распаковал архив наддува, и запустил
bjam tools\bcp
как описано Вот.
Создал подмножество библиотеки повышения, запустив
dist\bin\bcp.exe algorithm/string.hpp [outdir]
Скопировал результат в подпапку моего проекта, добавил каталог boost в путь поиска C ++ и собрал проект.
…
Когда я добавляю filesystem или filesystem.hpp в приведенную выше команду (даже если я использую опцию —scan в моих собственных исходных файлах), и копирую результат в папку моего проекта, просто попробуйте включить «boost / filesystem.hpp «, я получаю
LINK : fatal error LNK1104: cannot open file 'libboost_system-vc120-mt-gd-1_57.lib'
Не было *.lib
файлы, которые будут найдены в выводе из bcp. Чтобы заставить его строить, мне пришлось вручную скопировать libboost_system-*.lib
а также libboost_filesystem-*.lib
файлы из stage \ lib \ в мой проект (и добавьте каталог, содержащий их, в Свойства проекта -> Свойства конфигурации -> Компоновщик -> Общие -> Дополнительные каталоги библиотеки).
Это ожидаемое поведение, что BCP не скопировал все необходимое? Или я пропустил шаг? Или это ошибка BCP?
bcp будет копировать только исходные файлы, поэтому вам придется заново собирать библиотеки из дерева исходных текстов, которое генерирует bcp. Так что да, это ожидаемое поведение и да, вы пропустили шаг. 🙂
Я не думаю, что это ошибка в самом bcp, но процесс создания подмножества Boost определенно не особенно удобен для пользователя. Увидеть ниже.
Если вы получаете зависимости, которые нуждаются в компиляции (например, boost / system), вам также необходимо включить материал, необходимый для сборки в новом дереве исходного кода. Кажется, что зависимости между версиями Boost меняются, но методом проб и ошибок я обнаружил, что для 1.57 нужно добавить build
, bootstrap.bat
, bootstrap.sh
, boostcpp.jam
а также boost-build.jam
в команду bcp, чтобы вы могли выполнить сборку из нового дерева исходных текстов:
dist\bin\bcp.exe algorithm/string.hpp build bootstrap.bat bootstrap.sh boostcpp.jam boost-build.jam [outdir]
Редактировать: В зависимости от версии Boost может потребоваться добавить config
на вышеупомянутую линию, чтобы предотвратить ошибки сборки (предложено Себастьяном Маршингом). — Конец редактирования
Затем, и это действительно похоже на ошибку в скриптах сборки, вы должны открыть Jamfile верхнего уровня в вашем недавно сгенерированном дереве и закомментировать или удалить два use-project
линии, которые упоминают /boost/tools/inspect
а также /boost/libs/wave/tool
, В противном случае невозможность найти эти каталоги нарушит сборку. Другой вариант, конечно, это включить tools / inspect и wave в командную строку bcp, но они приносят с собой довольно много зависимостей, поэтому я бы не рекомендовал этого, если вам не нужны эти конкретные инструменты / библиотеки.
Затем вам нужно добавить шаг сборки в ваш собственный проект для сборки библиотек, используя ту же процедуру, что вы использовали для сборки полного пакета Boost (т. Е. Ваш шаг 3, но внутри вашего «минимизированного» исходного дерева).
Если вы хотите, вы можете добавить уже созданные двоичные файлы b2 и bjam в дерево исходных текстов вместо шага начальной загрузки, но тогда вы сможете строить только на платформах, на которых эти двоичные файлы могут работать.
И, кстати, часть «b2» вашего третьего шага действительно не нужна.
Я раздвоил bcp на GitHub и скомпилировал бинарный файл bcp
Затем я использовал этот двоичный файл bcp для извлечения всех необходимых исходных файлов заголовочных файлов bcp из библиотеки BOOST. Затем я собрал автономный дистрибутив bcp. (Вы можете легко скомпилировать код и получить зависимость бесплатно bcp
файл в Windows или Linux. Я предложил несколько ссылок для скачивания на моей вилке.)
Этот процесс может помочь вам, проверить Вот для деталей. Я тоже сталкивался с проблемами со связью. Boost auto_link является причиной сбоя сборки в Windows, просто закомментируйте этот заголовочный файл, все будет в порядке.
Проблема со связью в Windows MSVC связана с поведением автоссылки Boost. Проверять, выписываться boost/config/auto_link.hpp
для дальнейшей информации.