2014-07-16 172 views
0

使用多個STLport的配置我用升壓(1.54.0,bjam的2011年12月1日。OS = NT)與在Windows CE開發項目的STLport(5.2.1)。我首先開始使用單個Windows CE平臺SDK,並且大部分都很好。但是現在我需要支持幾個Windows CE平臺SDK,每個SDK都有自己的系統頭文件和編譯標誌。與升壓

首先,我爲這些平臺(比如PLATFORM1和PLATFORM2)構建了STLport,並將STLport庫放到了例如c:\lib\STLport-5.2.1\lib\PLATFORM1c:\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建立通過運行帶有stdlib=stlport-5.2.1~PLATFORM1標誌bjam.exe Boost庫,同時爲PLATFORM2使用stdlib=stlport-5.2.1~PLATFORM2

但是錯誤的STLport庫路徑被bjam用於PLATFORM2。例如,-n標誌運行的bjam顯示了平臺下面的鏈接命令(注意在第二次調用錯誤的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指令從用戶config.jam,無論我傳遞給stdlib參數的版本如何。 我做錯了什麼?什麼是正確的方式來設置環境,以便能夠用不同的STLport二進制文件構建Boost?

回答

0

我通過使用特殊變量來定義STLport庫位置來解決問題。 基本上,我是這樣做的。

user-config.jam我改變了我所有的STLport工具集初始化到一個單一的一個:使用的STLport

:5.2.1:C:/lib/STLport-5.2.1/stlport: C:/ lib目錄/STLport-5.2.1/lib/ $(STLPORTLIBSUBDIR);

另外,偷看變量,我的使用指令之前加入以下行某處:

本地STLPORTLIBSUBDIR = [modules.peek:STLPORTLIBSUBDIR];

,然後搭建PLATFORM1 Boost庫,我需要通過bjam的參數如下:

stdlib=stlport-5.2.1-sSTLPORTLIBSUBDIR=PLATFORM1