Создание подмножества повышения в окнах

Я пытаюсь настроить подмножество boost и правильно скомпилировать его с помощью bjam, однако я не получаю желаемого результата. Я работаю над окнами, используя boost 1.37.0.

Допустим, я хочу собрать/установить библиотеки smart_ptr и файловую систему. Я намеренно выбрал библиотеку только для заголовков и одну библиотеку для компиляции библиотеки. Я хочу, чтобы они были встроены в структуру каталогов, подобную той, которую я получил бы, если бы построил полную установку boost с помощью bjam (т.е. без указания какого-либо --with-libraryX), но, конечно, без всех библиотек, которые меня не интересуют. .

Мой первый подход состоял в том, чтобы использовать --with-filesystem --with-smart_ptr в bjam, однако мне показалось, что он не распознает smart_ptr (я безуспешно пытался использовать smartptr и smart-ptr). Я предполагаю, что это потому, что это библиотека только для заголовков.

Когда я удалил его и имел только --with-filesystem, казалось, что файлы заголовков ВСЕХ библиотек копируются в путь установки и создаются только библиотеки для файловой системы. Поведение сборки библиотеки было тем, на которое я надеялся, но я получил множество файлов заголовков для библиотек, которые меня не интересуют, установленных в моем каталоге boost.

Мой второй подход состоял в том, чтобы использовать bcp для копирования соответствующих проектов. Это сработало в том смысле, что я получил только те проекты, которые мне были нужны (и их зависимости). Однако они не предоставили никаких make-файлов для сборки скопированных библиотек. Это означает, что мне нужно будет настроить файлы проектов для всех библиотек, которые не являются только заголовками, и создать их вручную.

Итак, мой вопрос в основном заключается в том, есть ли способ выборочного создания boost, который копирует только заголовки для интересующих меня библиотек и создает файлы библиотек только для интересующих меня библиотек без заголовков (и библиотеки boost, которые они зависит от курса)?

Вероятно, для этого существует множество ручных/скриптовых решений, но если бы я мог запустить что-то, только используя bjam, это было бы для меня намного полезнее, поскольку добавление новых библиотек или обновление до новой версии boost было бы очень простым.

РЕДАКТИРОВАТЬ: добавлена ​​полная командная строка для первого подхода:

bjam install --prefix=c:\temp\boostsmall 
   --build-dir=C:\temp\boostsmalltemp --layout=system 
   --with-filesystem variant=debug link=static threading=multi
   runtime-link=static

Scoped_ptr изменен на smart_ptr


person Laserallan    schedule 13.01.2009    source источник
comment
У меня такая же проблема с попыткой установить регулярное выражение. Однако не доволен необходимостью копировать каталог инструментов.   -  person Agnel Kurian    schedule 21.04.2009


Ответы (2)


Решил это.

В решении bcp были файлы make для проектов, однако мне нужно было скопировать каталог инструментов и корень каталога boost в то место, где я скопировал все свои библиотеки, чтобы все заработало.

person Laserallan    schedule 13.01.2009
comment
Как вы предотвратили копирование bjam несвязанных заголовков? - person Agnel Kurian; 22.04.2009
comment
Я предположил, что bcp копирует только связанные заголовки. Поэтому после того, как я переместил все соответствующие проекты в определенное место и создал библиотеки, он должен содержать только то, что имеет значение. - person Laserallan; 22.04.2009

Отличный вопрос! Это вопрос, который мне недавно удалось выяснить, я думаю.

У меня уже были установлены полные библиотеки Boost, включая те, которые требуют отдельной компиляции.

Мне удалось создать подмножество библиотек Boost (regex) для конкретного приложения, над которым я работал, используя следующие шаги:

  1. Сначала убедитесь, что исполняемый файл bcp установлен в первую очередь. В корневой папке Boost перейдите в папку tools/bcp и запустите здесь bjam.exe. Для меня это создало исполняемый файл bcp в [Boost path]\bin.v2\tools\bcp\msvc-10.0\release\link-static:

  2. Затем создайте папку, в которой вы хотите разместить подмножество Boost. Возможно, это уже папка для проекта Visual Studio, над которым вы работаете.

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

    регулярное выражение bcp.exe --boost = "C:\Program Files\boost_1_55_0\boost_1_55_0" C:\Projects\RegexProject\BoostLite

  4. В проекте Visual Studio установите дополнительные каталоги и библиотеки включения, чтобы они указывали на созданную папку «Boost lite».

  5. И последнее, что, я думаю, было описано ранее: мне нужно было перейти к моей обычной настройке папки Boost и скопировать требуемую папку stage/lib, содержащую все файлы lib, необходимые для версии подмножества, и скопировать их сюда, всего несколько связанных с регулярными выражениями lib файлы в моем случае.

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

Можно найти публикацию в блоге, описывающую то же самое. здесь.

person AndyUK    schedule 11.06.2014