![](/img/trans.png)
[英]Using boost with Bazel under Windows 10 and Visual Studio Community 2019
[英]Using Boost on Windows (Visual Studio)
我想開始使用Boost。 我正在Visual Studio中編寫一個C ++程序(顯然是在Windows機器上)。
Boost的入門指南說:
獲取Boost副本的最簡單方法是使用安裝程序。 本入門指南的Boost網站版本將提供有關安裝程序可用日期的未注明日期信息,或參閱Boost下載或BoostPro Computing提供的安裝程序。 如果您使用Microsoft Visual Studio , 我們特別建議使用安裝程序 ,因為安裝程序可以下載並安裝預編譯的庫二進制文件,從而避免了自行構建它們的麻煩。
我不確定是否要遵循這個建議,或者只是自己下載並構建所有內容。 我在安裝程序中看到的潛在問題是:
所以我的問題是,我只是偏執,應該去安裝路線,還是我是正確的,應該自己建造? 如果有任何人有使用Boost和Visual Studio的經驗,我會很感激他們是否可以分享他們對此的看法(如果應該自己構建它,任何提示也會受到贊賞,例如我應該只復制每個文件我實際上用的是什么?等等。
注意:
關於StackOverflow的一些類似的問題,但沒有明確地問這個問題,讓我覺得我不應該使用安裝程序,這就是為什么我在這里明確要求它。 作為參考,這些是問題:
確保每個人都正確配置的一個好方法是使用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。
- 事情不再是自包含的(即每個團隊成員必須安裝Boost,然后配置Visual Studio來識別它)。
- 我無法將Boost保持在源代碼控制之下(理想情況下,我希望它像源代碼一樣成為源代碼控制中的源文件)。
在將Boost置於源代碼管理之下之前,請記住編譯的庫需要幾千兆字節。 (我的Boost文件夾大約5GB)讓每個人都為自己安裝Boost可能是值得的。
除此之外,安裝程序應該可以正常工作,但是自己編譯它也是非常簡單的。
默認情況下,Boost會安裝到特定於版本的文件夾中(如果您自己編譯它們並且使用安裝程序),那么很容易將多個版本並排安裝。 因此,如果您的團隊將Boost升級到新版本,您可以簡單地更改.sln或.vsprops文件中的包含路徑以使編譯器搜索新版本 - 如果同事沒有安裝正確的版本,他只是將無法構建(這可能比使用舊版本靜默構建更可取)
另外需要考慮的是你是否需要全部或部分提升。 我們在這里做的是將源代碼放在版本控制中,並為我們實際想要使用的庫創建一個單獨的包裝器項目。 單個庫的編寫非常干凈,只需將所有cpp文件放入一個新的visual studio項目即可。 您可能需要設置頂級配置標頭(我認為我將其設置為強制包含)並且整個過程非常容易構建。 將此項目添加為解決方案中的依賴項,這意味着您可以將所有二進制文件保留在SCM之外,並確保每個人都始終保持最新狀態。
無論如何,大部分提升都是標題,所以你可能會發現只有少數幾個你想要構建的庫。 這種方法使您更容易匹配您的VS項目設置。
我們實際上創建了自己的安裝程序,只使用了我們在工作中使用的Boost部分,並將其提供給IT人員以在開發人員計算機上安裝。 我們還在版本控制中保留了boost的副本,因此我們可以正確地跟蹤它與系統其余部分之間的依賴關系,並自己構建它。
我認為這是兩個世界中最糟糕的工作方式。 但它確實給了我們最大的控制權。
有幾點不讓它受源代碼控制:
我個人不打算自己構建它 - 在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,所以它的先決條件並不罕見。 當然,自動化它是微不足道的。 優點是:
對於Visual Studio 2015和最新的Boost版本,以下是我們為團隊提供的分步說明:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.