| (同じ利用者による、間の2版が非表示) | |||
| 34行目: | 34行目: | ||
==== RHEL / SUSE ==== | ==== RHEL / SUSE ==== | ||
Boostをビルドするため、依存関係のライブラリをインストールする。<br> | Boostをビルドするため、依存関係のライブラリをインストールする。<br> | ||
# SUSE | <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 \ | sudo zypper install libicu-devel xz-devel libbz2-devel libzstd-devel python-devel python3-devel \ | ||
openmpi-devel # オプション | openmpi-devel # オプション | ||
| 40行目: | 49行目: | ||
[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のインストールディレクトリ> | ||
| 53行目: | 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> | ||
| 81行目: | 101行目: | ||
*: どのバリエーションがビルドされるかは、各ライブラリが何をサポートしているかに依存することに注意する。 | *: どのバリエーションがビルドされるかは、各ライブラリが何をサポートしているかに依存することに注意する。 | ||
*: <br> | *: <br> | ||
** minimal (デフォルト) | ** minimal (デフォルト) | ||
**: 最小限のvariantのセットをビルドする。 | **: 最小限のvariantのセットをビルドする。 | ||
**: Windowsの場合、デバッグモードとリリースモードの静的マルチスレッドライブラリであり、共有ランタイムを使用する。 | **: Windowsの場合、デバッグモードとリリースモードの静的マルチスレッドライブラリであり、共有ランタイムを使用する。 | ||
| 93行目: | 113行目: | ||
<br> | <br> | ||
必要ならば、~/.profileファイル等に環境変数を追記する。<br> | 必要ならば、~/.profileファイル等に環境変数を追記する。<br> | ||
<br> | |||
vi ~/.profile | vi ~/.profile | ||
<br> | <br> | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="sh"> | ||
# ~/.profileファイル | # ~/.profileファイル | ||
| 107行目: | 128行目: | ||
==== Windows ==== | ==== Windows ==== | ||
[https://www.boost.org/users/download/ Boostの公式Webサイト] | ===== ダウンロード ===== | ||
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. | <code>b2.exe</code> ファイルを生成するため、バッチファイルを実行する。<br> | ||
bootstrap.bat | bootstrap.bat | ||
<br> | <br> | ||
<code>b2.exe</code> を使用してBoostライブラリをビルドする。(32ビット、64ビット、ARM64 の各構成をビルドしてもよい)<br> | |||
<br> | |||
===== b2.exe ビルドオプション ===== | |||
Boostライブラリの生成に使用できる主なオプションを、以下に示す。<br> | |||
<br> | |||
* <code>toolset</code> | |||
*: ビルドに使用するコンパイラ (ツールセット) を指定する。 | |||
*: 詳細はVisual Studio toolset対応表を参照すること。 | |||
* <code>address-model</code> | |||
* | |||
*: | |||
*: | |||
* <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<コア数></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- | 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- | 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> | |||
===== ライブラリ名の命名規約 ===== | |||
<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> | <br> | ||
===== Visual Studio プロジェクトの設定 ===== | |||
Visual Studioを起動して、任意のC++のプロジェクトを作成する。<br> | |||
<u>これは、各プロジェクトごとに設定する必要があることに注意する。</u><br> | <u>これは、各プロジェクトごとに設定する必要があることに注意する。</u><br> | ||
<br> | <br> | ||
[プロジェクト]メインメニュー - [プロパティ]を選択する。<br> | [プロジェクト]メインメニュー - [プロパティ]を選択する。<br> | ||
[プロジェクトページ]画面が開くので、画面左にある[C/C++] - [全般] - 画面右にある[追加のインクルードディレクトリ]に、以下の設定を追記する。<br> | [プロジェクトページ]画面が開くので、画面左にある[C/C++] - [全般] - 画面右にある[追加のインクルードディレクトリ]に、以下の設定を追記する。<br> | ||
<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 | <Boostのインストールディレクトリ>\stage\x86\lib | ||
# 64ビット向けライブラリの場合 | # 64ビット向けライブラリの場合 | ||
<Boostのインストールディレクトリ>\stage\lib\ | <Boostのインストールディレクトリ>\stage\x64\lib | ||
# ARM64向けライブラリの場合 | |||
<Boostのインストールディレクトリ>\stage\arm64\lib | |||
<br><br> | <br><br> | ||
| 195行目: | 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; | ||
} | } | ||
| 215行目: | 375行目: | ||
<br> | <br> | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<!-- test.xmlファイル --> | |||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
| 224行目: | 384行目: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Windows10]][[カテゴリ:C++]] | [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Windows11]][[カテゴリ:Windows10]][[カテゴリ:C++]] | ||