簡體   English   中英

在Windows上使用Boost(Visual Studio)

[英]Using Boost on Windows (Visual Studio)

我想開始使用Boost。 我正在Visual Studio中編寫一個C ++程序(顯然是在Windows機器上)。

Boost的入門指南說:

獲取Boost副本的最簡單方法是使用安裝程序。 本入門指南的Boost網站版本將提供有關安裝程序可用日期的未注明日期信息,或參閱Boost下載或BoostPro Computing提供的安裝程序。 如果您使用Microsoft Visual Studio我們特別建議使用安裝程序 ,因為安裝程序可以下載並安裝預編譯的庫二進制文件,從而避免了自行構建它們的麻煩。

我不確定是否要遵循這個建議,或者只是自己下載並構建所有內容。 我在安裝程序中看到的潛在問題是:

  1. 事情不再是自包含的(即每個團隊成員必須安裝Boost,然后配置Visual Studio來識別它)。
  2. 我無法將Boost保持在源代碼控制之下(理想情況下,我希望它像源代碼一樣成為源代碼控制中的源文件)。 編輯 :從評論來看,它看起來像有點大(如5 GB!),所以很明顯我只需要保留部分源代碼控制)。

所以我的問題是,我只是偏執,應該去安裝路線,還是我是正確的,應該自己建造? 如果有任何人有使用Boost和Visual Studio的經驗,我會很感激他們是否可以分享他們對此的看法(如果應該自己構建它,任何提示也會受到贊賞,例如我應該只復制每個文件我實際上用的是什么?等等。

注意:

關於StackOverflow的一些類似的問題,但沒有明確地問這個問題,讓我覺得我不應該使用安裝程序,這就是為什么我在這里明確要求它。 作為參考,這些是問題:

  1. 提升鏈接,Visual Studio和版本控制
  2. 使用C ++源包含相關的Boost庫(使用Visual Studio)

確保每個人都正確配置的一個好方法是使用svn externals。 您可以創建類似/trunk/boost1.35東西,然后您可以使用svn外部指向它。

這樣,當新版本的boost出現時,你可以將你的svn外部/trunk/boost1.40/trunk/boost1.40

在您的存儲庫中,您的svn external指向存儲庫中的svn文件夾。 示例/depends/boost

我們個人將boost頭文件保存在源代碼控制之下,如上所述,但將libs保存為我們要求大家下載的zip文件。 我們有一個類似於以下BOOST_LIB的環境變量,我們將其指向當前的boost庫目錄。

我建議使用安裝程序。

自己建造並不難。 這是程序:

Download boost into C:\Program Files\boost\boost_1_40_0

Open the command prompt and change your current directory to the Boost root directory

bootstrap

.\bjam

The library binaries are now sprinkled through the folders under 
C:\Program Files\boost\boost_1_40_0\bin.v2 
Find the required libraries and copy them to 
C:\Program Files\boost\boost_1_40_0\lib

( Do not confuse folders called lib and libs! )

然而,這很慢並且足夠復雜,尤其是最后一步,你和其他人可能會偶爾搞砸一些東西,導致浪費很多時間來解決神秘的構建錯誤 - 這無論如何都是我的經驗。

我在Windows下構建了Boost。 其“bjam”安裝工具自動檢測MSVC並將其用於編譯; 我不會對建立自己有任何保留意見。 它真的比“./configure && make && make install”要困難得多。

甚至可能需要構建自己,因為在線提供的Boost庫不包括ICU(Unicode)支持,例如對於boost_regex lib。

  1. 事情不再是自包含的(即每個團隊成員必須安裝Boost,然后配置Visual Studio來識別它)。
  2. 我無法將Boost保持在源代碼控制之下(理想情況下,我希望它像源代碼一樣成為源代碼控制中的源文件)。

在將Boost置於源代碼管理之下之前,請記住編譯的庫需要幾千兆字節。 (我的Boost文件夾大約5GB)讓每個人都為自己安裝Boost可能是值得的。

除此之外,安裝程序應該可以正常工作,但是自己編譯它也是非常簡單的。

默認情況下,Boost會安裝到特定於版本的文件夾中(如果您自己編譯它們並且使用安裝程序),那么很容易將多個版本並排安裝。 因此,如果您的團隊將Boost升級到新版本,您可以簡單地更改.sln或.vsprops文件中的包含路徑以使編譯器搜索新版本 - 如果同事沒有安裝正確的版本,他只是將無法構建(這可能比使用舊版本靜默構建更可取)

另外需要考慮的是你是否需要全部或部分提升。 我們在這里做的是將源代碼放在版本控制中,並為我們實際想要使用的庫創建一個單獨的包裝器項目。 單個庫的編寫非常干凈,只需將所有cpp文件放入一個新的visual studio項目即可。 您可能需要設置頂級配置標頭(我認為我將其設置為強制包含)並且整個過程非常容易構建。 將此項目添加為解決方案中的依賴項,這意味着您可以將所有二進制文件保留在SCM之外,並確保每個人都始終保持最新狀態。

無論如何,大部分提升都是標題,所以你可能會發現只有少數幾個你想要構建的庫。 這種方法使您更容易匹配您的VS項目設置。

我們實際上創建了自己的安裝程序,只使用了我們在工作中使用的Boost部分,並將其提供給IT人員以在開發人員計算機上安裝。 我們還在版本控制中保留了boost的副本,因此我們可以正確地跟蹤它與系統其余部分之間的依賴關系,並自己構建它。

我認為這是兩個世界中最糟糕的工作方式。 但它確實給了我們最大的控制權。

有幾點不讓它受源代碼控制:

  1. 提升是巨大的。
  2. 編譯是非常重要的(特別是對於幾種配置)
  3. 編譯很長(你不希望每個開發人員都這樣做)

我個人不打算自己構建它 - 在Linux上,例如我總是使用分發提供的包。

我會使用安裝程序,除非您需要自定義構建標志。 它更容易,並且構建提升(至少在我最后一次這樣做時)並不是最清晰的過程。 沒有什么可以阻止您下載與安裝程序提供的boost版本匹配的源代碼,並將其置於版本控制中。 這是我過去用於其他庫(nss,iplanet sdk)的方法,它運行良好。

我建議首先運行bootstrap.bat - 它將構建bjam.exe然后

bjam --stagedir="c:\Program Files\Boost" --build-type=complete --toolset=msvc-9.0 --with-regex --with-date_time --with-thread --with-signals --with-system --with-filesystem --with-program_options stage

bjam --stagedir="c:\Program Files\Boost" --build-type=complete --toolset=msvc-10.0 --with-regex --with-date_time --with-thread --with-signals --with-system --with-filesystem --with-program_options stage

..

您只需指定正確的工具集即可。 它會將所有二進制文件放到.. \\ lib文件夾中。

我會說,只需將Boost安裝作為項目的先決條件。 一次性少量步驟只需幾分鍾即可完成手動安裝。 大多數大型復雜項目最終都會依賴Boost,所以它的先決條件並不罕見。 當然,自動化它是微不足道的。 優點是:

  1. 您不會在您的倉庫中添加巨大的Boost分配
  2. 你不必挑選你使用的東西
  3. 其他項目可以共享安裝
  4. 一次性設置還負責構建header + cpp庫

對於Visual Studio 2015和最新的Boost版本,以下是我們為團隊提供的分步說明:

https://stackoverflow.com/a/39628306/207661

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM