差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
c_cpp:boost [2020/08/27 04:01] – [ビルド/インストール] ともやん | c_cpp:boost [2021/07/05 02:02] (現在) – ともやん | ||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | < | ||
- | #result pre, #mincode pre { | ||
- | overflow: hidden; | ||
- | font-size: 10px; | ||
- | } | ||
- | # | ||
- | height: 250px; | ||
- | overflow: scroll; | ||
- | overflow-x: hidden; | ||
- | font-size: 10px; | ||
- | } | ||
- | #mintbl table { | ||
- | font-size: 12px; | ||
- | } | ||
- | .dokuwiki .plugin_wrap table { | ||
- | width: auto; | ||
- | } | ||
- | #logo { | ||
- | background-color: | ||
- | padding: 10px; | ||
- | width: fit-content; | ||
- | } | ||
- | #logo p { | ||
- | margin: 0; | ||
- | } | ||
- | </ | ||
- | </ | ||
====== Boost C++ Libraries ====== | ====== Boost C++ Libraries ====== | ||
{{c_cpp: | {{c_cpp: | ||
行 33: | 行 5: | ||
\\ | \\ | ||
**Boost** (ブースト) とは、C++ の先駆的な開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースのソフトウェアライブラリのことを指す。コミュニティとしての Boost は C++ 標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、Boost コミュニティは C++ の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/ | **Boost** (ブースト) とは、C++ の先駆的な開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースのソフトウェアライブラリのことを指す。コミュニティとしての Boost は C++ 標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、Boost コミュニティは C++ の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/ | ||
- | \\ | + | |
Boost で公開されるライブラリはコミュニティの公開レビューによって精選されている。Boost を使用して作成したプログラムは、商用、非商用を問わず無償の Boost Software License の下でライセンスされる。\\ | Boost で公開されるライブラリはコミュニティの公開レビューによって精選されている。Boost を使用して作成したプログラムは、商用、非商用を問わず無償の Boost Software License の下でライセンスされる。\\ | ||
- | \\ | + | |
Boost はテンプレートなどを活用して積極的にメタプログラミングやジェネリックプログラミングの技法を取り入れて行く傾向がある。そのため Boost ライブラリの利用者には C++ の現代的な記述に慣れていることを要求される。\\ | Boost はテンプレートなどを活用して積極的にメタプログラミングやジェネリックプログラミングの技法を取り入れて行く傾向がある。そのため Boost ライブラリの利用者には C++ の現代的な記述に慣れていることを要求される。\\ | ||
- | \\ | + | |
このライブラリは、先鋭的な技術を好むプログラマーが積極的に使用していることで有名である。\\ | このライブラリは、先鋭的な技術を好むプログラマーが積極的に使用していることで有名である。\\ | ||
- | \\ | + | |
[[https:// | [[https:// | ||
行 2112: | 行 2084: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | ==== ソースコードからビルド ==== | ||
+ | 下記の内容は正式対応前に **Visual Studio 2019 Preview** で、最新の **Boost** をソースコードからビルドした。\\ | ||
+ | **Boost** が正式対応しているコンパイラでは、これほど苦労はしない。\\ | ||
+ | - タスクバーの「ここに入力して検索」に sysdm.cpl を入力して Enter キーを押す。 | ||
+ | - 「システムのプロパティ」の「詳細設定」タブの[環境変数]ボタンを押して「環境変数」画面を開く。 | ||
+ | - 「環境変数」画面の [システム環境変数] の [新規] ボタンを押して以下の環境変数を登録する。< | ||
+ | 変数名: BOOST | ||
+ | 変数値: C: | ||
+ | </ | ||
+ | - タスクバーの「ここに入力して検索」に cmd を入力して「コマンドプロンプト」を「管理者として実行」する。 | ||
+ | - 「コマンドプロンプト」以下のコマンドを入力する。< | ||
+ | > cd %BOOST% | ||
+ | > bootstrap.bat | ||
+ | </ | ||
+ | Building Boost.Build engine | ||
+ | |||
+ | Generating Boost.Build configuration in project-config.jam for msvc... | ||
+ | |||
+ | Bootstrapping is done. To build, run: | ||
+ | |||
+ | .\b2 | ||
+ | |||
+ | To generate header files, run: | ||
+ | |||
+ | .\b2 headers | ||
+ | |||
+ | To adjust configuration, | ||
+ | Further information: | ||
+ | |||
+ | - Command line help: | ||
+ | .\b2 --help | ||
+ | |||
+ | - Getting started guide: | ||
+ | http:// | ||
+ | |||
+ | - Boost.Build documentation: | ||
+ | http:// | ||
+ | </ | ||
+ | - 現時点で bjam は **Visual Studio 2019 Preview** に対応していないので msvc.jam を修正する。< | ||
+ | 24d23 | ||
+ | < * Visual Studio 2019—14.2 | ||
+ | 1019c1018 | ||
+ | < if [ MATCH " | ||
+ | --- | ||
+ | > if [ MATCH " | ||
+ | 1179c1178 | ||
+ | < | ||
+ | --- | ||
+ | > | ||
+ | 1208, | ||
+ | < if [ MATCH " | ||
+ | < { | ||
+ | < | ||
+ | < } | ||
+ | < else if [ MATCH " | ||
+ | --- | ||
+ | > if [ MATCH " | ||
+ | 1542c1537 | ||
+ | < if $(version) = 14.1 || $(version) = 14.2 || $(version) = " | ||
+ | --- | ||
+ | > if $(version) = 14.1 || $(version) = " | ||
+ | 1964c1959 | ||
+ | < .known-versions = 14.2 14.1 14.0 12.0 11.0 10.0 10.0express 9.0 9.0express 8.0 8.0express 7.1 | ||
+ | --- | ||
+ | > .known-versions = 14.1 14.0 12.0 11.0 10.0 10.0express 9.0 9.0express 8.0 8.0express 7.1 | ||
+ | 1978d1972 | ||
+ | < .version-alias-14.2 = 14.2 ; | ||
+ | 2007, | ||
+ | < .version-14.2-path = | ||
+ | < " | ||
+ | < " | ||
+ | < ; | ||
+ | 2012d2001 | ||
+ | < .version-14.2-env = VS160COMNTOOLS ProgramFiles ProgramFiles(x86) ; | ||
+ | </ | ||
+ | - *** Visual Studio 2019—14.2** コメント追加。 | ||
+ | - **if [ MATCH " | ||
+ | - **exact-version = [ MATCH " | ||
+ | - **if [ MATCH " | ||
+ | if [ MATCH " | ||
+ | { | ||
+ | version = 14.2 ; | ||
+ | } | ||
+ | else if [ MATCH " | ||
+ | </ | ||
+ | - **if $(version) = 14.1 || $(version) = " | ||
+ | - **.known-versions = 14.1 14.0 12.0 11.0 10.0 10.0express 9.0 9.0express 8.0 8.0express 7.1** を **.known-versions = 14.2 14.1 14.0 12.0 11.0 10.0 10.0express 9.0 9.0express 8.0 8.0express 7.1** に修正。 | ||
+ | - **.version-alias-14.2 = 14.2 ;** を追記。 | ||
+ | - <WRAP prewrap 100% mincode>< | ||
+ | .version-14.2-path = | ||
+ | " | ||
+ | " | ||
+ | ; | ||
+ | </ | ||
+ | - **.version-14.2-env = VS160COMNTOOLS ProgramFiles ProgramFiles(x86) ;** を追記。 | ||
+ | - 「スタート」の「Visual Studio 2019」より「x86 Native Tools Command Prompt for VS 2019」または「x64 Native Tools Command Prompt for VS 2019」を起動して、以下のコマンドを入力する。< | ||
+ | > bjam --toolset=msvc link=static, | ||
+ | </ | ||
+ | - 以下のようにコンパイルが開始される。< | ||
+ | Performing configuration checks | ||
+ | |||
+ | - 32-bit | ||
+ | - arm : no (cached) | ||
+ | - mips1 : no (cached) | ||
+ | ~省略~ | ||
+ | cl /c /nologo /TP / | ||
+ | glcmn.cpp | ||
+ | cl /c /nologo /TP / | ||
+ | glcanvas.cpp | ||
+ | if exist ..\..\lib\vc_x64_lib\wxmsw31ud_gl.lib del ..\..\lib\vc_x64_lib\wxmsw31ud_gl.lib | ||
+ | link /LIB /NOLOGO / | ||
+ | </ | ||
+ | - ビルドが完了すると以下の出力が得られる。< | ||
+ | include path: %BOOST% | ||
+ | library path: %BOOST%\stage\lib | ||
+ | </ | ||
+ | |||
+ | === auto_link.hpp の修正 === | ||
+ | 現時点で boost は Visual Studio 2019 のオートリンクに対応していないので auto_link.hpp を修正する。 | ||
+ | <WRAP prewrap 100% mincode> | ||
+ | <file diff %BOOST%\boost\config\auto_link.hpp.patch> | ||
+ | 176c176 | ||
+ | < # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1920) | ||
+ | --- | ||
+ | > # elif defined(BOOST_MSVC) | ||
+ | 180,184d179 | ||
+ | < | ||
+ | < # elif defined(BOOST_MSVC) | ||
+ | < | ||
+ | < // vc14.2: | ||
+ | < # define BOOST_LIB_TOOLSET " | ||
+ | </ | ||
+ | </ | ||
+ | - **# elif defined(BOOST_MSVC)** を **# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1920)** に修正。 | ||
+ | - <WRAP prewrap 100% mincode>< | ||
+ | # elif defined(BOOST_MSVC) | ||
+ | |||
+ | // vc14.2: | ||
+ | # define BOOST_LIB_TOOLSET " | ||
+ | </ | ||
+ | |||
+ | === 参考 === | ||
+ | <WRAP prewrap 100% mintbl> | ||
+ | ^ 表記 | ||
+ | | 2019 | Visual Studio 2019\\ Version 16.1.2 | ||
+ | | 2019 Preview | ||
+ | | 2017 Update 7 | Visual Studio 2017 Version 15.7.5 | ||
+ | </ | ||
+ | [[windows: | ||
===== Linux でのインストール ===== | ===== Linux でのインストール ===== | ||
行 2148: | 行 2270: | ||
- | ===== 利用方法 ===== | + | ===== ライブラリの利用方法 ===== |
- | [[c_cpp: | + | [[c_cpp: |
===== 参考文献 ===== | ===== 参考文献 ===== | ||
[[https:// | [[https:// | ||
+ | [[git> | ||
+ | ==== 付録 ==== | ||
+ | [[tw> | ||