web-dev-qa-db-ja.com

Visual Studio 2010でBoostを使用する方法

Visual Studioの空のプロジェクトでBoostライブラリを使用する方法について、順を追って説明するのに適した手順は何ですか?

360
OlimilOops

Nateの答え はすでにかなり優れていますが、要求に応じてVisual Studio 2010についてより具体的に説明し、コンパイルに関する情報を含めます。外部ライブラリを必要とするさまざまなオプションのコンポーネント。

ヘッダのみのライブラリを使用している場合は、追加ダウンロードを展開して環境変数を設定するだけです。以下の手順は、環境変数をVisual Studioのみに設定し、システム全体には設定しません。あなたは一度だけそれをする必要があることに注意してください。

  1. 最新バージョンのboost(執筆時点では1.47.0)をあなたが選んだディレクトリ(例えばC:\boost_1_47_0)に展開する。
  2. Visual Studioで新しい空のプロジェクトを作成します。
  3. プロパティマネージャを開き、選択したプラットフォーム用の設定の1つを展開します。
  4. Microsoft.Cpp.<Platform>.userを選択して右クリックし、Propertiesを選択してプロパティページを編集用に開きます。
  5. 左側のVC++ Directoriesを選択してください。
  6. ブーストソースファイルへのパスを含めるためにInclude Directoriesセクションを編集します。
  7. 必要に応じて、選択したプラットフォームごとに手順3〜6を繰り返します。

あなたが構築を必要とするboostの部分を使用したいが、外部の依存関係を必要とする機能のどれも使用したくないなら、それを構築することはかなり簡単です。

  1. 最新バージョンのboost(執筆時点では1.47.0)をあなたが選んだディレクトリ(例えばC:\boost_1_47_0)に展開する。
  2. 選択したプラットフォーム用のVisual Studioコマンドプロンプトを起動して、最適な場所に移動します。
  3. bootstrap.batを実行してb2.exe(以前の名前はbjam)をビルドします。
  4. B2を実行します。

    • Win32:b2 --toolset=msvc-10.0 --build-type=complete stage;
    • x64:b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

散歩に出かけたり、映画を見たり、2/....

  1. 環境変数を設定するには、上記の命令セットからステップ2から6を実行してください。
  2. ブーストライブラリの出力へのパスを含めるようにLibrary Directoriesセクションを編集します。 (上記の例と指示のデフォルトはC:\boost_1_47_0\stage\libです。x86とx64を並べて使用したい場合は(<BOOST_PATH>\lib\x86<BOOST_PATH>\lib\x64のように)最初にディレクトリの名前を変更して移動します。
  3. 必要に応じて、選択したプラットフォームごとに手順2〜6を繰り返します。

オプションのコンポーネントが必要な場合は、やるべきことがもっとあります。これらは:

  • Boost.IOStreams Bzip2フィルタ
  • Boost.IOStreams Zlibフィルタ
  • Boost.MPI
  • Boost.Python
  • Boost.Regex ICUのサポート

Boost.IOStreams Bzip2フィルタ:

  1. 最新バージョンのbzip2ライブラリ(執筆時点では1.0.6)のソースファイルを、選択したディレクトリ(たとえばC:\bzip2-1.0.6)に展開します。
  2. ブーストを構築するために上記の2番目の手順に従いますが、ステップ5でb2を実行するときにオプション-sBZIP2_SOURCE="C:\bzip2-1.0.6"を追加します。

Boost.IOStreams Zlibフィルタ

  1. 最新バージョンのzlibライブラリ(執筆時点では1.2.5)のソースファイルを、選択したディレクトリ(たとえばC:\zlib-1.2.5)に展開します。
  2. ブーストを構築するために上記の2番目の手順に従いますが、ステップ5でb2を実行するときにオプション-sZLIB_SOURCE="C:\zlib-1.2.5"を追加します。

Boost.MPI

  1. Microsoft Compute Cluster PackなどのMPI配布をインストールします。
  2. ブーストを構築するために上記の命令の第2セットからステップ1 - 3に従ってください。
  3. ブートストラップの実行によって生じた、ディレクトリproject-config.jam内のファイル<BOOST_PATH>を編集します。 using mpi ;という行を追加します( ';'の前のスペースに注意してください)。
  4. 後押しを構築するために上記の命令の2番目のセットからの残りのステップに従ってください。 MPIインストールの自動検出に失敗した場合は、適切な場所でMPIを探すように適切なビルドファイルを探して変更する必要があります。

Boost.Python

  1. ActiveStateのActivePythonなどのPythonディストリビューションをインストールします。 PythonのインストールがPATHに入っていることを確認してください。
  2. ライブラリの32ビット版を完全に構築するには、32ビットPythonが必要です。64ビット版も同様です。このような理由で複数のバージョンがインストールされている場合は、b2に特定のバージョンの場所と使用時期を指示する必要があります。そのための1つの方法は、ブートストラップの実行から生じた、ディレクトリproject-config.jam内のファイル<BOOST_PATH>を編集することです。あなたのPythonのインストールパスとバージョンに合わせて、次の2行を追加してください( ';'の前のスペースに注意してください)。

    using python : 2.6 : C:\\Python\\Python26\\python ;

    using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;

    そのような明示的なPython仕様は現在MPI buildを失敗させることに注意してください。ですからMPIをビルドしているのであれば、すべてをビルドするために、仕様の有無にかかわらず別のビルドを行う必要があります。

  3. 後押しを構築するために上記の2番目の手順に従ってください。

Boost.Regex ICUのサポート

  1. ICU4Cライブラリの最新版(現時点では4.8)のソースファイルを、選択したディレクトリ(たとえばC:\icu4c-4_8)に展開します。
  2. <ICU_PATH>\source\allinoneでVisual Studioソリューションを開きます。
  3. 選択したプラットフォーム用のデバッグとリリースの両方の構成用にAllをビルドします。 debugとreleaseの両方のビルドの出力が同じディレクトリにある場合、Visual Studio 2010でICU4Cの最近のリリースをビルドする 問題 がある可能性があります。デフォルトの動作)考えられる回避策は、(debug build sayの)Build Allを実行してから、2番目の構成(例えばrelease build)でRebuild allを実行することです。
  4. X64用にビルドする場合は、ビルド中の64ビットアプリケーションの一部を実行するビルド後の手順があるため、x64 OSを実行する必要があります。
  5. 完了したら、必要に応じてソースディレクトリを削除します。
  6. ブーストを構築するために上記の2番目の手順に従いますが、ステップ5でb2を実行するときにオプション-sICU_PATH="C:\icu4c-4_8"を追加します。
504
KTC

Boost Webサイトの 指示 は役に立ちますが、ここではx64ライブラリも構築した要約版を示します。

  • 説明ページの セクション3 に記載されているライブラリのいずれかを使用している場合にのみ、これを実行する必要があります。 (例えば、Boost.Filesystemを使用するにはコンパイルが必要です。)それらのどれも使用していない場合は、解凍して実行してください。

32ビットライブラリを構築する

これにより、BoostヘッダーファイルがC:\Boost\include\boost-(version)の下に、32ビットライブラリがC:\Boost\lib\i386の下にインストールされます。ライブラリのデフォルトの場所はC:\Boost\libですが、複数のアーキテクチャ用に構築する予定の場合は、i386ディレクトリの下に配置することをお勧めします。

  1. Boostを新しいディレクトリに解凍します。
  2. 32ビットMSVCコマンドプロンプトを起動し、Boostが解凍されたディレクトリに移動します。
  3. 実行します:bootstrap
  4. 実行します:b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

    • Visual Studio 2012の場合は、toolset=msvc-11.0を使用します。
    • Visual Studio 2010の場合は、toolset=msvc-10.0を使用します。
    • Visual Studio 2017の場合は、toolset=msvc-14.1を使用します。
  5. インクルードパスにC:\Boost\include\boost-(version)を追加します。

  6. LibsのパスにC:\Boost\lib\i386を追加してください。

64ビットライブラリを構築する

これはBoostヘッダファイルをC:\Boost\include\boost-(version)の下に、そして64ビットライブラリをC:\Boost\lib\x64の下にインストールします。ライブラリのデフォルトの場所はC:\Boost\libですが、複数のアーキテクチャ用に構築する予定の場合は、x64ディレクトリの下に配置することをお勧めします。

  1. Boostを新しいディレクトリに解凍します。
  2. 64ビットMSVCコマンドプロンプトを起動し、Boostが解凍されたディレクトリに移動します。
  3. 実行します:bootstrap
  4. 実行します:b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
    • Visual Studio 2012の場合は、toolset=msvc-11.0を使用します。
    • Visual Studio 2010の場合は、toolset=msvc-10.0を使用します。
  5. インクルードパスにC:\Boost\include\boost-(version)を追加します。
  6. LibsのパスにC:\Boost\lib\x64を追加してください。
151
Nate

引数として-j%NUMBER_OF_PROCESSORS%を試しても、すべてのコアが使用されます。私のクアッドコアで物事を超高速にします。

19
Aaron Stainback

私は次のトリックをお勧めします:特別なboost.propsファイルを作成します

  1. プロパティマネージャを開く
  2. プロジェクトノードを右クリックして、[新しいプロジェクトプロパティシートを追加]を選択します。
  3. 場所を選択して、プロパティシートに名前を付けます(例:c:\ mystuff\boost.props)。
  4. 追加のIncludeおよびLibフォルダーを検索パスに変更します。

この手順には、boostを明示的に含めたいプロジェクトにのみboostが含まれるという価値があります。ブーストを使用する新しいプロジェクトがある場合は、次の操作を行います。

  1. プロパティマネージャを開きます。
  2. プロジェクトノードを右クリックして、[既存のプロパティシートを追加]を選択します。
  3. ランキング調整プロパティシートを選択します。

編集(@ jim-fredの編集後):

結果のboost.propsファイルは、次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros">
    <BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
  </PropertyGroup>
  <PropertyGroup>
    <IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
    <LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
</Project>

これには、boostディレクトリ(この場合はD:\ boost_1_53_0)の場所用のユーザマクロと、他の2つのパラメータ(IncludePathとLibraryPath)が含まれています。ステートメント#include <boost/thread.hpp>は適切なディレクトリ(この場合はD:\ boost_1_53_0\boost\thread.hpp)でthread.hppを見つけます。 'stage\lib \'ディレクトリは、インストール先のディレクトリによって変わる可能性があります。

このboost.propsファイルはD:\boost_1_53_0\ディレクトリにあります。

14
Uri

Boostのどの部分が必要ですか?多くのものがVisual Studioに同梱されているTR1の一部なので、あなたは単に言うことができる、例えば:

#include <tr1/memory>

using std::tr1::shared_ptr;

Jamesによれば、これも(C++ 0xでは)うまくいくはずです。

#include <memory>

using std::shared_ptr;
13
fredoverflow

このスレッドはしばらく前からあります、そして私はあなたの特定のハードウェアの上でできるだけ速くBoostを造るためにHOWについて何かを加えることを考えました。

4コアまたは6コアの場合は、それぞれ-j5または-j7を使用してください。確かにデュアルコアがない限り、標準ビルドでも-j2でもありません。

私は、メインステーションで3930K(6コア)の株式クロックでSandy Bridge Extremeを実行していますが、古いバックアップボックスでは2600k(4コア)を使用しています。 1ビルドプロセス。ここでNは物理コアの数です。 N + 2は収益が減少する時点に達し、時間は上がります。

注:ハイパースレッディングは有効、32GB RAM DDR3、Samsung 840 EVO SSD。

- 6コア上のj7(2分51秒)(Win7 Ultimate x 64)(Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 2
Seconds           : 51
Milliseconds      : 128
Ticks             : 1711281830
TotalDays         : 0.0019806502662037
TotalHours        : 0.0475356063888889
TotalMinutes      : 2.85213638333333
TotalSeconds      : 171.128183
TotalMilliseconds : 171128.183

- 6コア上のj6(3分2秒)(Win7 Ultimate x 64)(Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 2
Milliseconds      : 809
Ticks             : 1828093904
TotalDays         : 0.00211584942592593
TotalHours        : 0.0507803862222222
TotalMinutes      : 3.04682317333333
TotalSeconds      : 182.8093904
TotalMilliseconds : 182809.3904

- 6コア上のj8(3分17秒)(Win7 Ultimate x64)(Visual Studio 2013)

PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 17
Milliseconds      : 652
Ticks             : 1976523915
TotalDays         : 0.00228764342013889
TotalHours        : 0.0549034420833333
TotalMinutes      : 3.294206525
TotalSeconds      : 197.6523915
TotalMilliseconds : 197652.3915

-j7 build on 6-core

設定

Building the Boost C++ Libraries.


Performing configuration checks

    - 32-bit                   : yes (cached)
    - arm                      : no  (cached)
    - mips1                    : no  (cached)
    - power                    : no  (cached)
    - sparc                    : no  (cached)
    - x86                      : yes (cached)
    - has_icu builds           : no  (cached)
warning: Graph library does not contain MPI-based parallel components.
note: to enable them, add "using mpi ;" to your user-config.jam
    - zlib                     : no  (cached)
    - iconv (libc)             : no  (cached)
    - iconv (separate)         : no  (cached)
    - icu                      : no  (cached)
    - icu (lib64)              : no  (cached)
    - message-compiler         : yes (cached)
    - compiler-supports-ssse3  : yes (cached)
    - compiler-supports-avx2   : yes (cached)
    - gcc visibility           : no  (cached)
    - long double support      : yes (cached)
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
    - zlib                     : no  (cached)

私は64ビットのビルドは少し時間がかかることに注意してください、私はそれらのために同じ比較をして更新する必要があります。

6
codenheim

ブーストを次の場所からダウンロードします。 http://www.boost.org/users/download/ svnによって

  • Windows - >亀(最も簡単な方法)

その後、cmd - > boostディレクトリ( "D:\ boostTrunk" - パッケージをチェックアウトまたはダウンロードして展開する)に移動する。:command:bootstrap

( "D:\ boostTrunk")にbjam.exeを作成した後:command:bjam toolset = msvc-10.0の亜種= debug、release threading = multi link = static(It 20分ほどかかります。)

その後、Visual Studio 2010を開いて - >空のプロジェクトを作成 - >プロジェクトのプロパティに移動 - > set:

Project properties VS 2010

このコードを貼り付けて、それが機能しているかどうかを確認しますか?

#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/regex.hpp>

using namespace std;

struct Hello 
{
    Hello(){ 
        cout << "Hello constructor" << endl;
    }

    ~Hello(){
        cout << "Hello destructor" << endl;
        cin.get();
    }
};


int main(int argc, char**argv)
{
    //Boost regex, compiled library
    boost::regex regex("^(Hello|Bye) Boost$");
    boost::cmatch helloMatches;
    boost::regex_search("Hello Boost", helloMatches, regex);
    cout << "The Word between () is: " << helloMatches[1] << endl;

    //Boost shared pointer, header only library
    boost::shared_ptr<Hello> sharedHello(new Hello);

    return 0;
}

リソース: https://www.youtube.com/watch?v=5AmwIwedTCM

5
andrew

ちょっと注意してください:もしコンパイル時間を減らしたいのなら、フラグを追加することができます。

-j2

2つの並行ビルドを同時に実行する。これは1つの映画を見ることにそれを減らすかもしれません;)

5
GaMer13

これが私がBoostを使うことができた方法です:

  1. ZipバージョンのBoostライブラリーをダウンロードして解凍します。
  2. Bootstrap.batファイルを実行してから、bjam.exeを実行します。
  3. およそ30分ほど待ってください。
  4. Visual Studioで新しいプロジェクトを作成します。
  5. プロジェクト - >プロパティ - >リンカ - >一般 - >追加のライブラリディレクトリに行き、boost/stage/libを追加するディレクトリ。
  6. プロジェクト - >プロパティ - > C/C++ - >一般 - >追加のインクルードディレクトリに進み、追加ブーストそれへのディレクトリ。

あなたは間違いなくあなたのプロジェクトを構築することができるでしょう!

4
bhavesh

ここにある のWindowsインストーラ は私にとっては完璧に機能しました。私は以下のステップを踏みました:

  1. 完了するまでインストールウィザードに従います。
  2. ビジュアルスタジオを運営する。
  3. 新しいC++プロジェクトを作成する
  4. プロジェクトのプロパティを開く(ソリューションエクスプローラでプロジェクト名を右クリックして確認できます)
  5. [C/C++]> [一般]> [追加のインクルードディレクトリ]の下に、ルートディレクトリを追加するパスを追加します。私のバージョンのデフォルトはC:\ local\boost_1_63_0でした。 "boost"の後の数字はboostのバージョンです。
  6. プロジェクトのプロパティで、[リンカー]> [追加のライブラリディレクトリ]の下にライブラリファイルのディレクトリを追加します。私のバージョンのデフォルトはC:\ local\boost_1_63_0\lib64-msvc-14.0でした。 "lib"の後の数字はビルドターゲット(Visual Studioでは32ビットまたは64ビット)に関連し、 "msvc"の後の数字はVisual Studioのバージョンに関連します(14.0はVisual Studio 2015に関連しますが、私は2017 Visual Studioで使用します。

がんばろう!

3
Zoob

KTCの非常に有益な主な答えに少し追加:

あなたが無料のVisual Studio C++ 2010 Expressを使用していて、それを64ビットバイナリをコンパイルするために手に入れ、今やそれを使用して64ビットバージョンのBoostライブラリを使用したいのであれば、ビットライブラリ(あなたの走行距離はもちろん変わるかもしれませんが、私のマシンではこれは悲しいケースです)。

次のようにしてこれを修正できます。

  1. 32ビットMSVCコマンドプロンプトを起動し、Boostが解凍されたディレクトリに移動します。
  2. 実行:ブートストラップ

環境を設定するために 'setenv'への呼び出しを挿入しました。リリースビルドの場合、上記の手順は次のようになります。

  1. 32ビットMSVCコマンドプロンプトを起動し、Boostが解凍されたディレクトリに移動します。
  2. 実行: "C:¥Program Files¥Microsoft SDKs¥Windows¥v7.1¥Bin¥setenv.cmd"/Release/x64
  3. 実行:ブートストラップ

私はここでこの情報を見つけました: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html

2
ecotax

Visual Studioを使い始めるための最小限の例です。

1.をダウンロードし、Boostをここから解凍してください。

2.別々のコンパイルを必要としないBoostライブラリの例を使用して、Visual Studioの空のプロジェクトを作成します。

#include <iostream>
#include <boost/format.hpp>

using namespace std;  
using namespace boost;  

int main()  
{  
    unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };  

    cout << format("%02X-%02X-%02X-%02X-%02X")  
            % arr[0]  
            % arr[1]  
            % arr[2]  
            % arr[3]  
            % arr[4]  
         << endl;  
}  

3. Visual Studioプロジェクトのプロパティで、追加のインクルードディレクトリを設定します。

Project Properties

非常に単純な例では:

Visual StudioにBoostライブラリをインストールする方法

ランキング調整ライブラリ全体を使用したくない場合は、サブセットのみを使用します。

Windowsのboostライブラリのサブセットを使う

コンパイルを必要とするライブラリについて特に知りたいのなら:

WindowsでBoostでコンパイルされたライブラリを使用する方法

1
AndyUK

さらに、私が非常に役に立つと思うものがあります。強化パスに環境変数を使用します。 (ウィンドウに環境変数を設定する方法、7,8,10の場合は下にリンクしてください) BOOST_ROOT変数はもう一般的な場所のようであり、あなたがBoostを解凍するルートパス。

次に、Properties、c ++、general、Additional Include Directoriesで$(BOOST_ROOT)を使用します。それなら、もしあなたが新しいバージョンのboostライブラリに移動するときは、あなたはこの新しいバージョンを指すようにあなたの環境変数を更新することができる。あなたのプロジェクトの多くとして、boostを使って、それらすべてのために '追加のインクルードディレクトリ'を更新する必要はないでしょう。

BOOST_LIB変数を作成して、ライブラリがステージングされている場所を指すようにすることもできます。したがって、[リンカー] - > [追加のライブラリディレクトリ]についても、プロジェクトを更新する必要はありません。 vs10で作られた古いものとvs14で作られた新しいものがあるので、両方の種類のboost libを同じフォルダにビルドした。そのため、プロジェクトをvs10からvs14に移動した場合、ブーストパスを変更する必要はありません。

注:環境変数を変更しても、開いているVSプロジェクトでは突然機能しません。 VSは起動時に変数をロードします。そのため、VSを閉じて再度開く必要があります。

0
lakeweb