boostライブラリコンパイルオプション(windows)

5817 ワード

boostライブラリのコンパイル手順は次のとおりです.
1、boostライブラリ(本例用boost 1.63)をダウンロードして解凍する
2.boostライブラリの復号ディレクトリに入り、bootstrapを実行する.batは、b 2またはbjamを生成してコンパイルツールを実行することができる.
3、b 2またはbjamでboostライブラリをコンパイルする(cmdコマンドラインに入り、boost復号ディレクトリ--b 2ツールがあるディレクトリに入る)
 
コンパイルオプションを特定しない場合、boostはダイナミックライブラリにコンパイルされ、32 bit、デフォルトではboost解凍ディレクトリにインストールされ、libはboost復号ディレクトリの下のサブディレクトリstag/libにコンパイルされ、使用環境はvsデフォルトコマンドラインに基づいて決定されます.
b2 toolset=msvc-14.0 architecture=x86 address-model=64 link=static variant=debug,release threading=multi runtime-link=static --with-coroutine --with-context --with-container --with-graph --with-signals --with-signals --with-iostreams --with-filesystem --with-date_time --with-thread --with-serialization --with-regex --with-system --with-program_options --with-math --with-mpi --with-python --with-wave --with-test --with-atomic --with-chrono --with-exception --with-locale --with-log --with-random --with-timer  --stagedir="E:\boost_1_63_0\64" --build-dir="E:\boost_1_63_0\64\build"

(1)ダイナミックライブラリコンパイル
コンパイルオプションの指定:link=shared
(2)スタティックライブラリコンパイル
コンパイルオプションの指定:link=static runtime-link=static、linkはコンパイル静的ライブラリ、runtime-linkは静的接続c++実行ライブラリ
(3)選択コンパイル
boostライブラリにはboost 1のような多くのワードライブラリがある.63でサポートされているライブラリは、コマンドラインb 2--show-librariesで現在のboostライブラリサポートコマンド--helpでヘルプを表示します.
The following libraries require building:
    - atomic
    - chrono
    - container
    - context
    - coroutine
    - coroutine2
    - date_time
    - exception
    - fiber
    - filesystem
    - graph
    - graph_parallel
    - iostreams
    - locale
    - log
    - math
    - metaparse
    - mpi
    - program_options
    - python
    - random
    - regex
    - serialization
    - signals
    - system
    - test
    - thread
    - timer
    - type_erasure
    - wave

完全にコンパイルする必要がなく、コンポーネント名を指定してコンパイルする場合は、必要なコンポーネントを手動で指定し、--with-コンポーネント名、例えば--with-date_を使用する必要があります.time
(4)完全コンパイル
すべてのライブラリをコンパイルする必要がある場合は、--witch-コンポーネント名を個別に指定する必要はありません.コンパイルオプションを直接使用します:--build-type=complete
(5)テープ実装コンパイル
デフォルトではprefixとinstallは指定されず、指定したディレクトリにライブラリはインストールされません.--prefixオプションが追加され、installキーが含まれている場合は
たとえば、--stagedir="E:boost_1_63_064"--build-dir="E:boost_1_63_064build"コンパイラと中間ファイルのパスを指定します.
例:--prefix="E:boost_1_63_0include"installはboostのすべてのヘッダファイルをincludeにコピーします
(6)異なるC++バージョンのコンパイル
vs 2015バージョンの場合、指定ツールセットはtoolset=msvc-14.0、vs 2008はmsvc-9.0、vs 2010はmsvc-10.0、vs 2013はmsvc-12.0、vs 2017はmsvc-15.0
(7)異なるシステムビットのコンパイル
32ビットコンパイルの場合、architecture=x 86 address-model=32を使用します.
64をコンパイルする場合はarchitecture=x 86 address-model=64を使用します.
ここでarchitecture=x 86はcpuがx 86シリーズであることを指定し、address-modelは32ビットアドレスを使用するか64ビットアドレスを使用するかを指定する.
4、コンパイルオプションの詳細
--build-type=completeはすべてのバージョンをコンパイルすることを表します(すべてのバージョンをコンパイルしないと、一部のバージョンしかコンパイルされません(正確にはvariant=release、threading=multi;link=shared|static;runtime-link=sharedに相当します).
(1)toolset:コンパイラツールを表し、私がインストールしたのはVS 2010なのでmsvc-10.0です.具体的なバージョン対応関係はboost_を表示できます.1_62_0\tools\build\src\tools\msvc.JAmのVersion aliasesセクションVersion aliases.                    .version-alias-6 = 6.0 ;                     .version-alias-6.5 = 6.0 ;                     .version-alias-7 = 7.0 ;                     .version-alias-8 = 8.0 ;                     .version-alias-9 = 9.0 ;                     .version-alias-10 = 10.0 ;                     .version-alias-11 = 11.0 ;                     .version-alias-12 = 12.0 ;                     .version-alias-14 = 14.0 ; (2)architecture:アーキテクチャ、つまりあなたのCPUアーキテクチャを表します.win 7 32ビットをインストールしているので、x 86のアーキテクチャを使用しています.
(3)instruction-set:命令セットを表し、依然として8086命令セットである
(4)address-model:アドレス長32ビットまたは64にaddress-model=64属性が必要であることを示し、この属性がなければ32ビットのプラットフォームライブラリがデフォルトで生成され、このオプションに参加して64ビットのDLLが生成される
(5)link:動的/静的リンクライブラリの生成を表し、動的リンクライブラリはshared、静的リンクライブラリはstaticであり、一般的に静的ライブラリにコンパイルされる.プログラムを与えるときにboostをパッケージ化するライブラリは非常に膨大であるからである.
(6)variant:生成されたDebugまたはreleaseバージョンを表し、一般的には両方のバージョンがコンパイルされる
(7)threading:単一/マルチスレッドコンパイルを表し、一般的に我々のプログラムはマルチスレッドを使用するのでmultiを選択した
(8).runtime-link:動的/静的リンクC/C++ランタイムライブラリ(C/C++Runtime)を表し、動的リンクを選択しました
(9)without/with:どのライブラリをコンパイル/コンパイルする必要がないかを示し、一部の自分が使用しないライブラリはコンパイルせずにどのライブラリをコンパイル/コンパイルしないかを選択することができます.python、mpiなどのライブラリは使いませんので除外します.そしてwave、graph、math、regex、test、program_options、serialization、signalsのいくつかのライブラリで作成された静的libは非常に大きいので、不要なものもwithoutしてもいいです.これは各人のニーズに応じて選択でき、デフォルトはすべてコンパイルされます.ただし、pythonのコンパイルを選択すると、python言語のサポートが必要になります.python公式ホームページにアクセスする必要があります.http://www.python.org/インストールをダウンロードします.boostに含まれるライブラリを表示するコマンドはbjam--show-librariesです.
(10)stage/install:stageはライブラリファイル(DLLとLib)のみを生成することを示し、installはヘッダファイルを含むincludeディレクトリも生成し、boost_1_62_0boostではboostライブラリの完全なヘッダファイルなので、もう1部コピーする必要はありません.コンパイルされたライブラリはステージフォルダに格納されます
(11)stagedir/prefix:stageではstagedir,installではprefixを用い,生成ファイルをコンパイルするパスを示す.異なるIDEに異なるディレクトリを指定することをお勧めします.例えば、VS 2008はE:SDKboostbinvc 9、VC 6はE:SDKboostbinvc 6に対応しています.そうしないと、いずれも1つのディレクトリの下に生成され、管理しにくいです.installパラメータを使用すると、ヘッダファイルディレクトリも生成されます.vc 9にはE:SDKboostbinvc 9includeboost-1_が対応しています.46boost、vc 6は似ています(この経路だけでは煩わしいので、stageを使ったほうがいいです). 
5、その他のオプション
--build-dir=コンパイルされたテンポラリファイルはbuilddirに格納されます(これで管理が容易になり、コンパイルが完了すると削除できます)--stagedir=コンパイル後のライブラリファイルを格納するパスで、デフォルトはstage--build-type=completeですべてのバージョンをコンパイルします.そうでなければ、一部のバージョンしかコンパイルされません(正確には、variant=release、threading=multi;link=shared|static;runtime-link=sharedに相当)variant=debug|releaseは、どのバージョンをコンパイルするかを決定します(Debug or Release?)link=static|sharedは、静的ライブラリと動的ライブラリのどちらを使用するかを決定します.threading=single|multiは、単一スレッドライブラリとマルチスレッドライブラリのどちらを使用するかを決定します.runtime-link=static|shared静的リンクC/C++標準ライブラリかどうかを決定します.--with-指定したライブラリのみをコンパイルします.入力--with-regexはregexライブラリのみをコンパイルします.--show-librariesコンパイルするライブラリ名を表示