Использование нескольких конфигураций STLport с Boost

я использую Увеличение (1.54.0, bjam 2011.12.1. OS = NT) с STLport (5.2.1) по проекту разработки Windows CE. Я начал с одного пакета SDK для Windows CE, и все прошло нормально. Но теперь мне нужно поддерживать несколько SDK для платформы Windows CE, каждый со своими собственными системными заголовками и флагами компиляции.

Во-первых, я собрал STLport для каждой из этих платформ (скажем, PLATFORM1 и PLATFORM2) и поместил библиотеки STLport, скажем, c:\lib\STLport-5.2.1\lib\PLATFORM1 а также c:\lib\STLport-5.2.1\lib\PLATFORM2,

Затем в user-config.jam Я имею:

using stlport : 5.2.1~PLATFORM1 : c:/lib/STLport-5.2.1/stlport : c:/lib/STLport-5.2.1/lib/PLATFORM1 ;
using stlport : 5.2.1~PLATFORM2 : c:/lib/STLport-5.2.1/stlport : c:/lib/STLport-5.2.1/lib/PLATFORM2 ;

Затем для PLATFORM1 я создаю библиотеки Boost, запустив bjam.exe с stdlib=stlport-5.2.1~PLATFORM1 флаг, при сборке для PLATFORM2 использует stdlib=stlport-5.2.1~PLATFORM2,

Но неверный путь к библиотеке STLport используется bjam для PLATFORM2. Например, запуск bjam с флагом -n показывает следующие команды связывания для платформ (обратите внимание на неправильный параметр LIBPATH во втором вызове):

link.exe ... /out:"building\...\stdlib-stlport-5.2.1~PLATOFRM1\threading-multi\boost_xxx.dll" ... /LIBPATH:"c:\lib\STLport-5.2.1\lib\PLATFORM1"link.exe ... /out:"building\...\stdlib-stlport-5.2.1~PLATOFRM2\threading-multi\boost_xxx.dll" ... /LIBPATH:"c:\lib\STLport-5.2.1\lib\PLATFORM1"

В принципе, он всегда использует первый using stlport директива из user-config.jam, независимо от того, какую версию я передаю параметру stdlib.
Я делаю что-то неправильно? Как правильно настроить среду для создания Boost с различными двоичными файлами STLport?

0

Решение

Я решил проблему с помощью специальной переменной для определения расположения библиотек STLport.
По сути, я сделал это следующим образом.

в user-config.jam Я изменил все мои инициализации набора инструментов STLport на одну:

используя stlport: 5.2.1: c: /lib/STLport-5.2.1/stlport:
с: /lib/STLport-5.2.1/lib/$ (STLPORTLIBSUBDIR) ;

Кроме того, чтобы посмотреть переменную, я добавил следующую строку где-то перед директивой using:

local STLPORTLIBSUBDIR = [modules.peek: STLPORTLIBSUBDIR];

И затем, чтобы собрать библиотеки Boost для PLATFORM1, мне нужно передать bjam следующие параметры:

stdlib=stlport-5.2.1 а также -sSTLPORTLIBSUBDIR=PLATFORM1

0

Другие решения


По вопросам рекламы [email protected]