(同じ利用者による、間の9版が非表示)
4行目: 4行目:
<br>
<br>
Boostのライセンスは、全てのユーザが最小限の制限でBoostライブラリを使用することを推奨している。<br>
Boostのライセンスは、全てのユーザが最小限の制限でBoostライブラリを使用することを推奨している。<br>
<br><br>
== BoostにおけるOpen MPI ==
OpenMPI (Open Message Passing Interface) は、Boostライブラリ自体の一部ではないが、Boost.MPIというコンポーネントと密接に関連している。<br>
<br>
Boost.MPIは、C++でMPI (Message Passing Interface) プログラミングを行うためのインターフェースを提供するBoostライブラリである。<br>
MPIは並列計算や分散メモリシステムでのプログラミングに広く使用されているAPI規格である。<br>
<br>
Open MPIは、このMPI規格の実装の1つである。<br>
Boost.MPIは、Open MPIを含む様々なMPI実装と連携して動作するように設計されている。<br>
Boost.MPIの主なメリットは、C++の抽象化を提供して、MPIプログラミングをより簡単かつ型安全にすることである。<br>
<br>
また、Boostの他のライブラリ (例: Boost.Serialization) との統合も図られている。<br>
<br>
Boost.MPIを使用する場合は、Open MPI等のMPI実装がシステムにインストールされている必要がある。<br>
Boost.MPIは、これらの実装の上に構築され、より高レベルのC++インターフェースを提供する。<br>
<br>
Boost.MPIをビルドする場合は、システムにOpen MPI等のMPI実装がインストールされていることが前提となる。<br>
Boostのビルド時には、MPI実装のヘッダーファイルとライブラリへのパスを正しく指定する必要がある。<br>
<br>
Boost.MPIは、基盤となるMPI実装 (Open MPI等) の性能特性を維持しつつ、C++の利点を活かしたインターフェースを提供する。<br>
また、異なるMPI実装間での互換性も考慮されている。<br>
<br>
Open MPIはMPIの実装の1つであり、Boost.MPIはこのようなMPI実装を利用してC++で並列プログラミングを行うためのインターフェースを提供するBoostコンポーネントである。<br>
Open MPIはBoost自体の一部ではないが、Boost.MPIを使用する場合の基盤となる重要なソフトウェアの1つとして位置付けられている。<br>
<br><br>
<br><br>


== Boostのインストール ==
== Boostのインストール ==
==== CentOS / SUSE ====
==== RHEL / SUSE ====
Boostをビルドするため、依存関係のライブラリをインストールする。<br>
Boostをビルドするため、依存関係のライブラリをインストールする。<br>
  sudo zypper install libicu-devel xz-devel libbz2-devel libzstd-devel python-devel
<br>
# RHEL
sudo dnf install libicu-devel xz-devel bzip2-devel libzstd-devel python3-devel \
                  openmpi-devel  # オプション
# SUSE 16
sudo zypper install libicu-devel xz-devel libbz2-devel libzstd-devel python3-devel \
                    openmpi-devel  # オプション
# SUSE 15.6
  sudo zypper install libicu-devel xz-devel libbz2-devel libzstd-devel python-devel python3-devel \
                    openmpi-devel  # オプション
<br>
<br>
[https://www.boost.org/users/download/ Boostの公式Webサイト]にアクセスして、Boostをダウンロードする。<br>
[https://www.boost.org/users/download/ Boostの公式Webサイト]にアクセスして、Boostをダウンロードする。<br>
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
  tar xf boost_<バージョン>.tar.gz  
<br>
  tar xf boost_<バージョン>.tar.gz
  cd boost_<バージョン>
  cd boost_<バージョン>
<br>
<u>ビルド時において、コンパイラを指定する場合は、環境変数 <code>CC</code> および <code>CXX</code> を指定する。</u><br>
<br>
<syntaxhighlight lang="sh">
# 例 :
export CC=gcc-14; \
export CXX=g++-14
</syntaxhighlight>
<br>
<br>
Boostをビルドおよびインストールする。<br>
Boostをビルドおよびインストールする。<br>
<br>
  # 全てインストールする場合
  # 全てインストールする場合
  ./bootstrap.sh --prefix=<Boostのインストールディレクトリ>
  ./bootstrap.sh --prefix=<Boostのインストールディレクトリ>
26行目: 73行目:
       install
       install
   
   
  # ヘッダーファイルのみインストールする場合  
  # ヘッダーファイルのみインストールする場合
  ./bootstrap.sh --prefix=<Boostのインストールディレクトリ>
  ./bootstrap.sh --prefix=<Boostのインストールディレクトリ>
   
   
  ./b2 headers \
  ./b2 headers \
               --build-dir=./build \
               --build-dir=./build \
               --layout=versioned  \  
               --layout=versioned  \
               install
               install
<br>
<br>
54行目: 101行目:
*: どのバリエーションがビルドされるかは、各ライブラリが何をサポートしているかに依存することに注意する。
*: どのバリエーションがビルドされるかは、各ライブラリが何をサポートしているかに依存することに注意する。
*: <br>
*: <br>
** minimal (デフォルト)  
** minimal (デフォルト)
**: 最小限のvariantのセットをビルドする。
**: 最小限のvariantのセットをビルドする。
**: Windowsの場合、デバッグモードとリリースモードの静的マルチスレッドライブラリであり、共有ランタイムを使用する。
**: Windowsの場合、デバッグモードとリリースモードの静的マルチスレッドライブラリであり、共有ランタイムを使用する。
64行目: 111行目:
* <code>--toolset</code>オプション
* <code>--toolset</code>オプション
*: ビルドに使用するツールセットを指定する。
*: ビルドに使用するツールセットを指定する。
<br>
必要ならば、~/.profileファイル等に環境変数を追記する。<br>
<br>
vi ~/.profile
<br>
<syntaxhighlight lang="sh">
# ~/.profileファイル
export LD_LIBRARY_PATH="/<Boostのインストールディレクトリ>/lib:$LD_LIBRARY_PATH"
export BOOST_ROOT="<Boostのインストールディレクトリ>"
export BOOST_LIBRARYDIR="/<Boostのインストールディレクトリ>/lib"
export CPPFLAGS="-L$/<Boostのインストールディレクトリ>/include $CPPFLAGS"
</syntaxhighlight>
<br>
<br>


==== Windows ====
==== Windows ====
[https://www.boost.org/users/download/ Boostの公式Webサイト]にアクセスして、Boostをダウンロードする。<br>
===== ダウンロード =====
過去のBoostをダウンロードする場合、https://www.boost.org/users/history/ にアクセスする。<br>
Boostをダウンロードする方法として、以下の2つがある。<br>
<br>
* ソースからビルドする方法 (推奨)
*: [https://www.boost.org/users/download/ Boostの公式Webサイト]からソースアーカイブをダウンロードする。
*: 過去バージョンのソースアーカイブは、[https://www.boost.org/users/history/ Boostの旧バージョンアーカイブ]からダウンロードできる。
*: <br>
* プリビルド済みバイナリを使用する方法
*: [https://sourceforge.net/projects/boost/files/boost-binaries/ SourceForge (boost-binaries)]から、各Visual Studioバージョン向けの <u>.exe</u> インストーラをダウンロードできる。
*: ただし、MSVC 14.4x (Visual Studio 2022 v17.10以降) 向けのバイナリは配布が限定的な場合があるため、該当バージョンを使用する場合はソースからビルドすることを推奨する。
<br>
<br>
===== ソースからビルドする手順 =====
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
<br>
<br>
解凍したディレクトリに移動して、コマンドプロンプトまたはPowerShellを管理者権限で実行する。<br>
解凍したディレクトリに移動して、コマンドプロンプトまたはPowerShellを管理者権限で実行する。<br>
b2.exeファイルを生成するため、バッチファイルを起動する。<br>
<code>b2.exe</code> ファイルを生成するため、バッチファイルを実行する。<br>
  bootstrap.bat
  bootstrap.bat
<br>
<br>
Boostライブラリを生成する。(32ビットおよび64ビットの両方を生成してもよい)<br>
<code>b2.exe</code> を使用してBoostライブラリをビルドする。(32ビット、64ビット、ARM64 の各構成をビルドしてもよい)<br>
Boostライブラリの生成に使用できるオプションを、以下に示す。<br>
<br>
* <code>toolset</code>オプション
===== b2.exe ビルドオプション =====
*: Visual Studio 2005 : <code>msvc-8.0</code>
Boostライブラリの生成に使用できる主なオプションを、以下に示す。<br>
*: Visual Studio 2008 : <code>msvc-9.0</code>
<br>
*: Visual Studio 2010 : <code>msvc-10.0</code>
* <code>toolset</code>
*: Visual Studio 2012 : <code>msvc-11.0</code>
*: ビルドに使用するコンパイラ (ツールセット) を指定する。
*: Visual Studio 2013 : <code>msvc-12.0</code>
*: 詳細はVisual Studio toolset対応表を参照すること。
*: Visual Studio 2015 : <code>msvc-14.0</code>
* <code>address-model</code>
*: Visual Studio 2017 : <code>msvc-14.1</code>
*: Visual Studio 2019 : <code>msvc-14.2</code>
*: Visual Studio 2022 : <code>msvc-14.3</code>
*: <br>
* <code>address-model</code>オプション
*: 32ビット向けライブラリを生成する場合 : <code>32</code>
*: 32ビット向けライブラリを生成する場合 : <code>32</code>
*: 64ビット向けライブラリを生成する場合 : <code>64</code>
*: 64ビット向けライブラリを生成する場合 : <code>64</code>
* <code>architecture</code>
*: <code>x86</code> または <code>arm</code> を指定する。
*: ARM64向けビルドを行う場合は <code>arm</code> を指定する。
* <code>link</code>
*: <code>static</code> (静的リンクライブラリ) / <code>shared</code> (DLL) / <code>static,shared</code> (両方) のいずれかを指定する。
* <code>runtime-link</code>
*: <code>static</code> を指定すると /MT または /MTd (静的ランタイム) でビルドされる。
*: <code>shared</code> を指定すると /MD または /MDd (動的ランタイム) でビルドされる。
* <code>variant</code>
*: <code>debug</code> / <code>release</code> / <code>debug,release</code> のいずれかを指定する。
* <code>threading</code>
*: <code>single</code> または <code>multi</code> を指定する。
* <code>--build-dir</code>
*: ビルド時の中間ファイルの出力先ディレクトリを指定する。
* <code>--stagedir</code>
*: ステージング先ディレクトリを指定する。
* <code>--prefix</code>
*: <code>b2 install</code> 使用時のインストール先ディレクトリを指定する。
* <code>--with-libraries</code> / <code>--without-libraries</code>
*: ビルドするライブラリを個別に選択または除外する。
* <code>--show-libraries</code>
*: ビルド対象となる利用可能なライブラリの一覧を表示する。
* <code>--layout</code>
*: <code>versioned</code> (Windowsデフォルト) / <code>tagged</code> / <code>system</code> のいずれかを指定する。
*: 指定するレイアウトによって、ライブラリ名の命名規則とインクルードディレクトリのパスが変わる。
* <code>-j&lt;コア数&gt;</code>
*: 並列ビルドに使用するCPUコア数を指定する。
<br>
===== Visual Studio toolset 対応表 =====
<code>toolset</code> オプションに指定するツールセット名と、対応するVisual Studioのバージョンを以下に示す。<br>
<br>
<center>
{| class="wikitable"
|+ Visual Studio toolset 対応表
! Visual Studio !! MSVC Build Tools !! b2 toolset
|-
| VS 2005 (8.0) || 8.0 || <code>msvc-8.0</code>
|-
| VS 2008 (9.0) || 9.0 || <code>msvc-9.0</code>
|-
| VS 2010 (10.0) || 10.0 || <code>msvc-10.0</code>
|-
| VS 2012 (11.0) || 11.0 || <code>msvc-11.0</code>
|-
| VS 2013 (12.0) || 12.0 || <code>msvc-12.0</code>
|-
| VS 2015 (14.0) || 14.0 || <code>msvc-14.0</code>
|-
| VS 2017 (15.x) || 14.1x || <code>msvc-14.1</code>
|-
| VS 2019 (16.x) || 14.2x || <code>msvc-14.2</code>
|-
| VS 2022 (17.0 - 17.9) || 14.30 - 14.39 || <code>msvc-14.3</code>
|-
| VS 2022 (17.10 - 17.14) || 14.40 - 14.44 || <code>msvc-14.4</code>
|-
| VS 2026 (18.0) || 14.50 || <code>msvc-14.5</code>
|}
</center>
<br>
===== 互換性に関する注意事項 =====
* MSVC 14.4x (Visual Studio 2022 v17.10以降) は、Boost 1.85以前のBoost.Buildで認識されない問題がある。
*: この問題が発生した場合は、Boost 1.86.0以降を使用すること。
* Visual Studio 2026 (msvc-14.5) を使用する場合は、Boost 1.91.0以降を推奨する。
*: Boost 1.91.0は2026年4月22日にリリースされた最新バージョンである。
<br>
===== ビルドコマンド例 =====
32ビット、64ビット、ARM64向けのビルドコマンド例を以下に示す。<br>
<br>
<syntaxhighlight lang="powershell">
  # 32ビット向けライブラリを生成する場合
  # 32ビット向けライブラリを生成する場合
  b2.exe toolset=msvc-xx.x link=static runtime-link=static,shared --build-dir=build/x86 address-model=32 -j <CPUのコア数> install --includedir=<Boostのインストールディレクトリ>\include --libdir=<Boostのインストールディレクトリ>\stage\lib\x86
  b2.exe toolset=msvc-14.3 address-model=32 architecture=x86 ^
        link=static,shared runtime-link=static,shared ^
        variant=debug,release threading=multi ^
        --build-dir=build\x86 ^
        --stagedir=stage\x86 ^
        -j4
   
   
  # 64ビット向けライブラリを生成する場合
  # 64ビット向けライブラリを生成する場合
  b2.exe toolset=msvc-xx.x link=static runtime-link=static,shared --build-dir=build/x64 address-model=64 -j <CPUのコア数> install --includedir=<Boostのインストールディレクトリ>\include --libdir=<Boostのインストールディレクトリ>\stage\lib\x64
  b2.exe toolset=msvc-14.3 address-model=64 architecture=x86 ^
        link=static,shared runtime-link=static,shared ^
        variant=debug,release threading=multi ^
        --build-dir=build\x64 ^
        --stagedir=stage\x64 ^
        -j4
# ARM64向けライブラリを生成する場合
b2.exe toolset=msvc-14.3 address-model=64 architecture=arm ^
        link=static,shared runtime-link=static,shared ^
        variant=debug,release threading=multi ^
        --build-dir=build\arm64 ^
        --stagedir=stage\arm64 ^
        -j4
# Visual Studio 2026 (msvc-14.5) を使用する場合の例 (Boost 1.91.0以降)
b2.exe toolset=msvc-14.5 address-model=64 architecture=x86 ^
        link=static,shared runtime-link=static,shared ^
        variant=debug,release threading=multi ^
        --build-dir=build\x64 ^
        --stagedir=stage\x64 ^
        -j4
</syntaxhighlight>
<br>
インストール先を指定してビルドする場合は、<code>--prefix</code> オプションと <code>install</code> ターゲットを使用する。<br>
<syntaxhighlight lang="powershell">
b2.exe toolset=msvc-14.3 address-model=64 ^
        link=static runtime-link=shared ^
        variant=release threading=multi ^
        --build-dir=build\x64 ^
        --prefix=<Boostのインストールディレクトリ> ^
        -j4 install
</syntaxhighlight>
<br>
<br>
次に、Visual Studioを起動して、任意のC++のプロジェクトを作成する。<br>
===== ライブラリ名の命名規約 =====
<code>--layout=versioned</code> (Windowsのデフォルト) を使用する場合、ライブラリ名には以下のような識別子が付加される。<br>
<br>
例: <code>libboost_filesystem-vc143-mt-s-x64-1_91.lib</code><br>
<br>
* <code>vc143</code>
*: コンパイラ識別子。Visual Studio 2022 (msvc-14.3) の場合は <code>vc143</code>、Visual Studio 2026 (msvc-14.5) の場合は <code>vc145</code> となる。
* <code>mt</code>
*: マルチスレッドでビルドされていることを示す。
* <code>s</code>
*: 静的ランタイムリンク (/MT または /MTd) でビルドされていることを示す。
* <code>x64</code>
*: 64ビットアーキテクチャ向けであることを示す。
* <code>1_91</code>
*: Boostのバージョン番号 (例: 1.91.0) を示す。
<br>
===== Visual Studio プロジェクトの設定 =====
Visual Studioを起動して、任意のC++のプロジェクトを作成する。<br>
<u>これは、各プロジェクトごとに設定する必要があることに注意する。</u><br>
<u>これは、各プロジェクトごとに設定する必要があることに注意する。</u><br>
<br>
<br>
[プロジェクト]メインメニュー - [プロパティ]を選択する。<br>
[プロジェクト]メインメニュー - [プロパティ]を選択する。<br>
[プロジェクトページ]画面が開くので、画面左にある[C/C++] - [全般] - 画面右にある[追加のインクルードディレクトリ]に、以下の設定を追記する。<br>
[プロジェクトページ]画面が開くので、画面左にある[C/C++] - [全般] - 画面右にある[追加のインクルードディレクトリ]に、以下の設定を追記する。<br>
<Boostのインストールディレクトリ>\include\boost-<バージョン>
<br>
<u>インクルードディレクトリのパスは、ビルド時に指定した <code>--layout</code> オプションによって異なる。</u><br>
<br>
* <code>--layout=versioned</code> (Windowsデフォルト) の場合
*: <Boostのインストールディレクトリ>\include\boost-<バージョン>
* <code>--layout=system</code> の場合
*: <Boostのインストールディレクトリ>\include
<br>
<br>
[プロジェクトページ]画面の画面左にある[リンカー] - [全般] - 画面右にある[追加のライブラリディレクトリ]に、以下の設定を追記する。<br>
[プロジェクトページ]画面の画面左にある[リンカー] - [全般] - 画面右にある[追加のライブラリディレクトリ]に、以下の設定を追記する。<br>
<u>ライブラリディレクトリのパスは、ビルド時に指定した <code>--stagedir</code> または <code>--prefix</code> の設定に依存する。</u><br>
<br>
  # 32ビット向けライブラリの場合
  # 32ビット向けライブラリの場合
  <Boostのインストールディレクトリ>\stage\lib\x86
  <Boostのインストールディレクトリ>\stage\x86\lib
   
   
  # 64ビット向けライブラリの場合
  # 64ビット向けライブラリの場合
  <Boostのインストールディレクトリ>\stage\lib\x64
  <Boostのインストールディレクトリ>\stage\x64\lib
<br>
# ARM64向けライブラリの場合
<Boostのインストールディレクトリ>\stage\arm64\lib
<br><br>
 
== Boostライブラリの確認 ==
Boostライブラリが使用できるかどうかを確認するため、以下に示すサンプルコードをビルドおよび実行する。<br>
Boostライブラリが使用できるかどうかを確認するため、以下に示すサンプルコードをビルドおよび実行する。<br>
  <syntaxhighlight lang="c++">
  <syntaxhighlight lang="c++">
// boost.cpp
  #include <iostream>
  #include <iostream>
  #include <vector>
  #include <vector>
151行目: 355行目:
       child.put("<xmlattr>.name2", data.name2);
       child.put("<xmlattr>.name2", data.name2);
     }
     }
 
     using namespace boost::property_tree::xml_parser;
     using namespace boost::property_tree::xml_parser;
     const int indent = 2;
     const int indent = 2;
     write_xml("test.xml", pt, std::locale(), xml_writer_make_settings<std::string>(' ', indent));
     write_xml("test.xml", pt, std::locale(), xml_writer_make_settings<std::string>(' ', indent));
 
     return 0;
     return 0;
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
ソースコードをコンパイルする。<br>
g++ -I/<Boostのインクルードディレクトリ>/include boost.cpp -o boost
<br>
コンパイルしたファイルを実行する。<br>
./boost
  # 出力例
  # 出力例
  boostバージョン:107600
  boostバージョン:107600
165行目: 375行目:
<br>
<br>
  <syntaxhighlight lang="xml">
  <syntaxhighlight lang="xml">
  # test.xmlファイルの内容
  <!-- test.xmlファイル -->
   
   
  <?xml version="1.0" encoding="utf-8"?>
  <?xml version="1.0" encoding="utf-8"?>
174行目: 384行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Windows10]][[カテゴリ:C++]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Windows11]][[カテゴリ:Windows10]][[カテゴリ:C++]]