將Boost庫添加到Visual Studio 2017


在windows 環境中,一般比較推薦的打包軟件的方式是,將自己所需要的共享庫放在軟件自己的文件夾中,並且避免與其它的軟件共用。除非是微軟的官方組件,比如微軟自家的VC Runtime。

Boost庫在windows 平台的使用,一般也是推薦直接靜態鏈接,而非是使用動態庫。並且 Boost 庫時如些強大,以致於你使用了之后,不需要手動在 VS 中配置你需要鏈接的庫文件,而是由頭文件搞定這一切,除非你用至的Boost庫用到了微軟自家的庫,但是默認這個庫又沒有配置到項目中。

廢話就說到這里,下面給出具體的操作過程。

第一步,當然是構建我們的Boost庫了

打開VS的命令行(在開始菜單里,我這里是中文版的,名稱是 “適用於 VS 2017 的 x64 本機工具命令提示”),進入到我們的Boost庫主目錄(下載好的Boost庫,解壓后的目錄)。

首先構建Boost自己的構建工具 b2和bjam 等,然后再調用構建工具來完成構建,為了方便,我們直接寫個批處理腳本吧。

1 bootstrap
2 b2 -j %NUMBER_OF_PROCESSORS% toolset=msvc-14.1 address-model=32 threading=multi --build-dir=x86_build --stagedir=stage_x86
3 b2 -j %NUMBER_OF_PROCESSORS% toolset=msvc-14.1 address-model=64 threading=multi --build-dir=x64_build --stagedir=stage_x64

當然,你也可以直接手輸上面的命令行完成構建。構建結束后,我們的 boost 構建目錄下會多出兩個目錄  stage_x86 stage_x64 ,這兩個目錄里就是我們需要的庫,當然在windows平台上默認只生成靜態庫,如果你需要動態庫,可以使用 b2的  --build-type 參數來指定。

第二步,將我們的Boost庫文件和頭文件放到指定目錄

我這里以放到 D:\libs\boost_1_65_1  目錄為示例進行操作,目錄結構如下

 

D:\libs\boost_1_65_1
                  |
                  |
                  +include 
                  |      |
                  |      +boost(boost頭文件)
                  |
                  |
                  +lib
                      |
                      +msvc-141
                              |
                              +x86(編譯好的x86庫)
                              |
                              +x64(編譯好的x64庫)

 

第三步,配置VS的C++屬性頁

這里我們只配置用戶屬性頁,而且只配置桌面應用

打開命令行,創建目錄(也許已存在,創建只是為了保證存在)

md %LOCALAPPDATA%\Microsoft\MSBuild\v4.0
cd  %LOCALAPPDATA%\Microsoft\MSBuild\v4.0
start .

然后你會發現彈出了一個文件夾。里面可能會有幾個文件,也許是空的,不過不要緊,我們想要的是這么兩個文件,對應的改一下就好,沒有就自己創建。

Microsoft.Cpp.Win32.user.props 和 Microsoft.Cpp.x64.user.props

兩個文件的內容默認是一樣的,我們修改成如下的樣子

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros">
    <BOOST_SDK_ROOT>D:\libs\boost_1_65_1</BOOST_SDK_ROOT>
  </PropertyGroup>
  <PropertyGroup>
    <IncludePath>$(BOOST_SDK_ROOT)\include;$(IncludePath)</IncludePath>
    <LibraryPath>$(BOOST_SDK_ROOT)\lib\msvc-$(PlatformToolsetVersion)\$(PlatformTarget)\;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup>
    <BuildMacro Include="BOOST_SDK_ROOT">
      <Value>$(BOOST_SDK_ROOT)</Value>
      <EnvironmentVariable>true</EnvironmentVariable>
    </BuildMacro>
  </ItemGroup>
</Project>

 

第四步,試一個?

自己寫Hello World!吧,我懶......

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM