回答:
一方でネイトの答えはすでにかなり良いです、私は、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
セクションを編集して、boostライブラリ出力へのパスを含めます。(上記の例と手順のデフォルトは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"
が、ステップ5でb2を実行するときにオプションを追加します。Boost.IOStreams Zlibフィルター
C:\zlib-1.2.5
。-sZLIB_SOURCE="C:\zlib-1.2.5"
が、ステップ5でb2を実行するときにオプションを追加します。Boost.MPI
project-config.jam
のディレクトリに<BOOST_PATH>
あるファイルを編集します。読み取る行を追加しますusing mpi ;
(「;」の前のスペースに注意してください)。Boost.Python
ライブラリの32ビットバージョンを完全にビルドするには、32ビットのPythonが必要です。64ビットバージョンの場合も同様です。このような理由で複数のバージョンがインストールされている場合は、b2に特定のバージョンの場所と、いつどのバージョンを使用するかを指示する必要があります。これを行う1つの方法は、ブートストラップの実行によって生じproject-config.jam
たディレクトリ内のファイルを編集することです<BOOST_PATH>
。次の2行を追加して、Pythonのインストールパスとバージョンに応じて適切に調整します(「;」の前のスペースに注意してください)。
using python : 2.6 : C:\\Python\\Python26\\python ;
using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;
現在、このような明示的なPython仕様により、MPIビルドが失敗することに注意してください。したがって、MPIもビルドする場合は、すべてをビルドするために、仕様ありとなしのいくつかの別個のビルドを行う必要があります。
上記の2番目の手順に従って、ブーストをビルドします。
Boost.Regex ICUサポート
C:\icu4c-4_8
。<ICU_PATH>\source\allinone
ます。-sICU_PATH="C:\icu4c-4_8"
が、ステップ5でb2を実行するときにオプションを追加します。一方で指示ブーストウェブサイト上で有用である、ここにも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
libsパスに追加します。これにより、に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
libsパスに追加します。すべてのコアを使用する引数として-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>
ブーストディレクトリ(この場合はD:\ boost_1_53_0)の場所のユーザーマクロと、IncludePathとLibraryPathの2つのパラメーターが含まれています。ステートメント#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;
std
C ++ 0x標準にあるため、C ++ 0xの一部になるTR1ライブラリはすべて名前空間に移動されました。(std::tr1
下位互換性のため、おそらく名前空間にもあると思います)。
このスレッドはしばらく前に出てきたので、特定のハードウェアでBoostをできるだけ速くビルドする方法について何か追加したいと思いました。
4コアまたは6コアの場合は、それぞれ-j5または-j7を使用します。確かにデュアルコアでない限り、標準のビルドでも-j2でもありません。
私のメインステーションで在庫クロック付き3930K(6コア)のSandy Bridge Extremeを実行していますが、古いバックアップボックスに2600k(4コア)があり、N +で最高のBoostコンパイル時間を得る傾向にあります1ビルドプロセス。Nは物理コアの数です。N + 2はリターンが減少するポイントに達し、時間が増加します。
注:ハイパースレッディングが有効になっている、32 GB RAM DDR3、Samsung 840 EVO SSD。
-j7 on 6コア(2分51秒)(Win7 Ultimate x64)(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 x64)(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->ブーストディレクトリに移動します( "D:\ boostTrunk"-ここで、パッケージをチェックアウトまたはダウンロードして抽出します):コマンド: ブートストラップ
( "D:\ boostTrunk")にbjam.exeを作成しました。その後、コマンド: bjam toolset = msvc-10.0 variant = debug、release threading = multi link = static (しばらく時間がかかります。20分ほどかかります。)
その後:Visual Studio 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;
}
以下は、Boostを使用する方法です。
エラーなしでプロジェクトをビルドできます!
あるWindowsインストーラここでは私のために完全に働きました。私は次のステップを踏みました:
幸運を!
KTCの非常に有益な主な回答への小さな追加:
無料のVisual Studio c ++ 2010 Expressを使用しており、64ビットバイナリをコンパイルして、64ビットバイナリの64ビットバージョンを使用する場合、32ビットで終了する可能性があります。ビットライブラリ(マイレージはもちろん異なる場合がありますが、私のマシンではこれは悲しいケースです)。
以下を使用してこれを修正できます:上記の手順の中間として
環境を設定するために 'setenv'への呼び出しを挿入しました。リリースビルドの場合、上記の手順は次のようになります。
私はこの情報をここに見つけました:http : //boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html
Visual Studioを使い始めるための最小限の例:
1. こちらからBoostをダウンロードして解凍します。
2.個別のコンパイルを必要としないサンプルブーストライブラリを使用して、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ライブラリをインストールする方法
boostライブラリ全体を使用したくない場合は、サブセットのみを使用します。
コンパイルが必要なライブラリについて今すぐ具体的に知りたい場合:
また、とても便利なものがあります。ブーストパスに環境変数を使用します。(Windowsで環境変数を設定する方法、7,8,10の下部にあるリンク) BOOST_ROOT変数はもはや一般的な場所であるようで、ブーストを解凍するルートパスに設定されています。
次に、プロパティで、c ++、一般、追加のインクルードディレクトリを使用します。 $(BOOST_ROOT)
。その後、boostライブラリの新しいバージョンに移動する場合は、この新しいバージョンを指すように環境変数を更新できます。プロジェクトの多くとして、ブーストを使用すると、それらすべての「追加のインクルードディレクトリ」を更新する必要がなくなります。
また、BOOST_LIB変数を作成して、libがステージングされる場所を指すようにすることもできます。したがって、リンカー->追加のライブラリディレクトリの場合も同様に、プロジェクトを更新する必要はありません。vs10で構築された古いものとvs14で構築された新しいものがあるので、両方の種類のboost libを同じフォルダーに構築しました。したがって、vs10からvs14にプロジェクトを移動する場合、ブーストパスを変更する必要はありません。
注:環境変数を変更すると、開いているVSプロジェクトで突然機能しなくなります。VSは起動時に変数をロードします。そのため、VSを閉じて再度開く必要があります。