2009-01-13 43 views
13

我在嘗試設置增強子集並使用bjam正確編譯,但是我沒有得到我期待的結果。我正在使用boost 1.37.0在windows上工作。在Windows中構建增效子集

比方說,我想建立/安裝庫smart_ptr和文件系統。我故意選擇了僅包含頭文件的庫和一個需要編譯庫的庫。如果我用bjam(即不指定任何--with-libraryX)構建一個完整的boost安裝,但是當然沒有我不感興趣的所有庫,我希望它們被構建到類似於我將得到的目錄結構中

我的第一種方法是在bjam中使用--with-filesystem --with-smart_ptr,但它好像不識別smart_ptr(我試過smartptr和smart-ptr沒有成功)。我想這是因爲它只是一個頭文件庫。

當我刪除它,只有--with文件系統似乎所有庫頭文件複製到安裝路徑,只建庫文件系統。圖書館的建設行爲是我所希望的,但是我有很多庫文件頭文件,我不想安裝在boost目錄中。

我的第二種方法是使用bcp來複制相關項目。這確實起到了作用,因爲我只獲得了我關心的項目(及其依賴項)。但是他們沒有提供任何構建被複制的庫的make文件。這意味着我需要爲所有不是標題的庫設置項目文件並手動構建它們。

所以我的問題是,基本上,是有選擇性地建設提升的方式,只複製標題對我很感興趣,只有建立庫文件的非頭只有我感興趣的庫庫(和提升他們依賴課程的圖書館)?

可能有很多基於手動/腳本的解決方案,但是如果我只能使用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

+0

我有試圖獲得正則表達式安裝相同的問題。不過不得不復制工具目錄。 – 2009-04-21 08:54:15

回答

5

解決它。

BCP的解決方案必須使文件的項目,但我需要複製的工具目錄和升壓目錄我複製了我所有的庫得到的東西時行駛的地方的根。

+0

你是如何阻止bjam複製無關頭文件的? – 2009-04-22 04:24:08

2

偉大的問題!我想,這是我最近弄清楚的一個問題。

我已經安裝了完整的Boost庫,包括要求獨立彙編的。

我設法創建Boost庫(正則表達式)爲我工作使用以下步驟特定應用的一個子集:

  1. 首先確保BCP可執行文件安裝在首位。在您的Boost根文件夾中,導航到tools/bcp文件夾並在此處運行bjam.exe。對我來說,這在[Boost path] \ bin.v2 \ tools \ bcp \ msvc-10中創建了bcp可執行文件。0 \ release \ link-static目錄:

  2. 然後創建您希望Boost子集駐留的文件夾。這可能已經是您正在使用的Visual Studio項目的文件夾。

  3. 運行您創建的bcp exectubale,確保包含您希望包含的庫,以及boost根目錄和目標文件夾的位置。觀察所需的Boost組件(例如,正則表達式)如何包含在目標文件夾中。

    正則表達式的Bcp.exe = --boost 「C:\ Program Files文件\ boost_1_55_0 \ boost_1_55_0」 C:\項目\ RegexProject \ BoostLite

  4. 在Visual Studio項目設置附加包含目錄和庫點到創建的'Boost lite'文件夾。

  5. 最後一件事 - 我想前面已經介紹過了 - 我需要進入常規的Boost文件夾設置並複製包含子版本所需的所有lib文件的所需stage/lib文件夾,並將其複製到此處在我的情況下,一些正則表達式相關的lib文件。

我發現這對我有效。任何來自其他人的經驗反饋將不勝感激。

A blog posting描述同樣的事情可以在這裏找到。