Visual Studioの空のプロジェクトでBoostライブラリを使用する方法について、順を追って説明するのに適した手順は何ですか?
Nateの答え はすでにかなり優れていますが、要求に応じてVisual Studio 2010についてより具体的に説明し、コンパイルに関する情報を含めます。外部ライブラリを必要とするさまざまなオプションのコンポーネント。
ヘッダのみのライブラリを使用している場合は、追加ダウンロードを展開して環境変数を設定するだけです。以下の手順は、環境変数をVisual Studioのみに設定し、システム全体には設定しません。あなたは一度だけそれをする必要があることに注意してください。
C:\boost_1_47_0
)に展開する。Microsoft.Cpp.<Platform>.user
を選択して右クリックし、Properties
を選択してプロパティページを編集用に開きます。VC++ Directories
を選択してください。Include Directories
セクションを編集します。あなたが構築を必要とするboostの部分を使用したいが、外部の依存関係を必要とする機能のどれも使用したくないなら、それを構築することはかなり簡単です。
C:\boost_1_47_0
)に展開する。bootstrap.bat
を実行してb2.exe(以前の名前はbjam)をビルドします。B2を実行します。
b2 --toolset=msvc-10.0 --build-type=complete stage
;b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage
散歩に出かけたり、映画を見たり、2/....
Library Directories
セクションを編集します。 (上記の例と指示のデフォルトはC:\boost_1_47_0\stage\lib
です。x86とx64を並べて使用したい場合は(<BOOST_PATH>\lib\x86
&<BOOST_PATH>\lib\x64
のように)最初にディレクトリの名前を変更して移動します。オプションのコンポーネントが必要な場合は、やるべきことがもっとあります。これらは:
Boost.IOStreams Bzip2フィルタ:
C:\bzip2-1.0.6
)に展開します。-sBZIP2_SOURCE="C:\bzip2-1.0.6"
を追加します。Boost.IOStreams Zlibフィルタ
C:\zlib-1.2.5
)に展開します。-sZLIB_SOURCE="C:\zlib-1.2.5"
を追加します。Boost.MPI
project-config.jam
内のファイル<BOOST_PATH>
を編集します。 using mpi ;
という行を追加します( ';'の前のスペースに注意してください)。Boost.Python
ライブラリの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をビルドしているのであれば、すべてをビルドするために、仕様の有無にかかわらず別のビルドを行う必要があります。
後押しを構築するために上記の2番目の手順に従ってください。
Boost.Regex ICUのサポート
C:\icu4c-4_8
)に展開します。<ICU_PATH>\source\allinone
でVisual Studioソリューションを開きます。-sICU_PATH="C:\icu4c-4_8"
を追加します。Boost Webサイトの 指示 は役に立ちますが、ここではx64ライブラリも構築した要約版を示します。
これにより、BoostヘッダーファイルがC:\Boost\include\boost-(version)
の下に、32ビットライブラリがC:\Boost\lib\i386
の下にインストールされます。ライブラリのデフォルトの場所はC:\Boost\lib
ですが、複数のアーキテクチャ用に構築する予定の場合は、i386
ディレクトリの下に配置することをお勧めします。
bootstrap
実行します:b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install
toolset=msvc-11.0
を使用します。toolset=msvc-10.0
を使用します。toolset=msvc-14.1
を使用します。インクルードパスにC:\Boost\include\boost-(version)
を追加します。
C:\Boost\lib\i386
を追加してください。これはBoostヘッダファイルをC:\Boost\include\boost-(version)
の下に、そして64ビットライブラリをC:\Boost\lib\x64
の下にインストールします。ライブラリのデフォルトの場所はC:\Boost\lib
ですが、複数のアーキテクチャ用に構築する予定の場合は、x64
ディレクトリの下に配置することをお勧めします。
bootstrap
b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
toolset=msvc-11.0
を使用します。toolset=msvc-10.0
を使用します。C:\Boost\include\boost-(version)
を追加します。C:\Boost\lib\x64
を追加してください。引数として-j%NUMBER_OF_PROCESSORS%を試しても、すべてのコアが使用されます。私のクアッドコアで物事を超高速にします。
私は次のトリックをお勧めします:特別なboost.props
ファイルを作成します
この手順には、boostを明示的に含めたいプロジェクトにのみboostが含まれるという価値があります。ブーストを使用する新しいプロジェクトがある場合は、次の操作を行います。
編集(@ 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\
ディレクトリにあります。
Boostのどの部分が必要ですか?多くのものがVisual Studioに同梱されているTR1の一部なので、あなたは単に言うことができる、例えば:
#include <tr1/memory>
using std::tr1::shared_ptr;
Jamesによれば、これも(C++ 0xでは)うまくいくはずです。
#include <memory>
using std::shared_ptr;
このスレッドはしばらく前からあります、そして私はあなたの特定のハードウェアの上でできるだけ速く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
設定
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ビットのビルドは少し時間がかかることに注意してください、私はそれらのために同じ比較をして更新する必要があります。
ブーストを次の場所からダウンロードします。 http://www.boost.org/users/download/ svnによって
その後、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:
このコードを貼り付けて、それが機能しているかどうかを確認しますか?
#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;
}
ちょっと注意してください:もしコンパイル時間を減らしたいのなら、フラグを追加することができます。
-j2
2つの並行ビルドを同時に実行する。これは1つの映画を見ることにそれを減らすかもしれません;)
これが私がBoostを使うことができた方法です:
あなたは間違いなくあなたのプロジェクトを構築することができるでしょう!
ここにある のWindowsインストーラ は私にとっては完璧に機能しました。私は以下のステップを踏みました:
がんばろう!
KTCの非常に有益な主な答えに少し追加:
あなたが無料のVisual Studio C++ 2010 Expressを使用していて、それを64ビットバイナリをコンパイルするために手に入れ、今やそれを使用して64ビットバージョンのBoostライブラリを使用したいのであれば、ビットライブラリ(あなたの走行距離はもちろん変わるかもしれませんが、私のマシンではこれは悲しいケースです)。
次のようにしてこれを修正できます。
環境を設定するために 'setenv'への呼び出しを挿入しました。リリースビルドの場合、上記の手順は次のようになります。
私はここでこの情報を見つけました: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
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プロジェクトのプロパティで、追加のインクルードディレクトリを設定します。
非常に単純な例では:
Visual StudioにBoostライブラリをインストールする方法
ランキング調整ライブラリ全体を使用したくない場合は、サブセットのみを使用します。
コンパイルを必要とするライブラリについて特に知りたいのなら:
さらに、私が非常に役に立つと思うものがあります。強化パスに環境変数を使用します。 (ウィンドウに環境変数を設定する方法、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を閉じて再度開く必要があります。