Создание подмножества надстройки в Windows - PullRequest
13 голосов
/ 13 января 2009

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

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

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

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

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

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

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

EDIT: Добавлена ​​полная командная строка для первого подхода:

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

Ответы [ 2 ]

5 голосов
/ 13 января 2009

Решил.

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

2 голосов
/ 11 июня 2014

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

У меня уже были установлены полные библиотеки 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 exectubale, который вы создали, убедившись, что в него включены библиотеки, которые вы хотите включить, а также местоположение корневого каталога boost и папки назначения. Посмотрите, как необходимые компоненты Boost (например, для регулярных выражений) были включены в папку назначения.

    bcp.exe regex --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.

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

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

...