Looking for boost Answers? Try Ask4KnowledgeBase
Looking for boost Keywords? Try Ask4Keywords

boostブーストを開始する


備考

ブーストとは何ですか?

Boostは、幅広いトピックをカバーする無料の高品質なC ++ライブラリの大規模なコレクションです。 C ++の多くの一般的な問題はBoostを使って解決されるため、C ++の「第2の標準ライブラリ」とみなされることがよくあります。

boost.orgから:

Boostは、無料のピアレビューポータブルC ++ソースライブラリを提供します。

私たちは、C ++標準ライブラリとうまく機能するライブラリを強調します。 Boostライブラリは、幅広く有用であり、幅広いアプリケーションにわたって使用可能であることが意図されています。 Boostライセンスは、商用および非商用の両方の使用を推奨します。

いくつかのBoostライブラリはさえてきた自分の道を作ったようなC ++ 11標準ライブラリ、およびいくつかの他、にBoost.OptionalBoost.Variant 、C ++ 17の一部となります。

ブーストは何をすることができますか?

Boostはプログラミングの大部分をカバーします。スタックオーバーフローのboostタグwikiから:

以下のライブラリが含まれています:

  • 文字列とテキスト処理
  • コンテナ
  • イテレータ
  • アルゴリズム
  • 関数オブジェクトと高次プログラミング
  • 汎用プログラミング
  • テンプレートメタプログラミング
  • プリプロセッサメタプログラミング
  • 並行プログラミング
  • 数学と数値
  • 正しさとテスト
  • データ構造
  • 画像処理
  • 入出力
  • インター言語サポート
  • メモリ
  • 解析
  • プログラミングインタフェース
  • 壊れたコンパイラの回避策

バージョン

バージョン新しいライブラリリリースノート発売日
1.10.0 ノート 1999-12-14
1.11.0 有理数 ノート 2000-02-01
1.12.0 ノート 2000-02-23
1.13.0 ユーティリティ、タイプ特性、コール特性、圧縮ペア ノート 2000-02-29
1.14.0 ノート 2000-03-05
1.15.0 乱数 ノート 2000-06-17
1.16.0 機能的なイテレータヘッダ ノート 2000-06-28
1.17.0 アレイ ノート 2000-08-03
1.18.0 グラフ、正規表現 ノート 2000-09-28
1.19.0 コンセプトチェック、Python、静的アサート、
プロパティマップの概念
ノート 2000-12-10
1.20.0 変換 ノート 2001年1月6日
1.21.0 イテレータアダプタ、プール、テスト ノート 2001年03月09日
1.22.0 CRC ノート 2001-05-25
1.23.0 任意、関数、トークナイザ、
特殊関数、Octonions、Quaternions
ノート 2001年7月6日
1.24.0 タプル ノート 2001-08-19
1.25.0 スレッド、バインド ノート 2001年10月1日
1.26.0 共通因子、プリプロセッサ ノート 2001-11-30
1.27.0 ノート 2002-02-05
1.28.0 ラムダ、I / O状態セーバー ノート 2002-05-15
1.29.0 日時、ダイナミックビセット、フォーマット ノート 2002年10月10日
1.30.0 ファイルシステム、オプション、間隔、MPL、スピリット ノート 2003年03月19日
1.31.0 enable_if、バリアント ノート 2004年01月26日
1.32.0 割り当て、Minmax、マルチインデックス、
数値変換、プログラムオプション、範囲、
シリアライゼーション、文字列、トリブール
ノート 2004年11月19日
1.33.0 Iostream、ハッシュ、パラメータ、
ポインタコンテナ、Wave
ノート 2005-08-11
1.34.0 Foreach、Statechart、TR1、Typeof、Xpressive ノート 2007-05-12
1.35.0 Asio、Bimap、循環バッファ、関数型、
フュージョン、GIL、プロセス間、侵入型、
数学/特殊関数、
数学/統計分布、MPI、システム
ノート 2008年3月29日
1.36.0 アキュムレータ、例外、ユニット、順序付けなし ノート 2008-08-14
1.37.0 プロト ノート 2008-11-03
1.38.0 フライウェイト、スコープ終了、スワップ ノート 2009-02-08
1.39.0 シグナル2 ノート 2009-05-02
1.40.0 ノート 2009-08-27
1.41.0 プロパティツリー ノート 2009-11-17
1.42.0 ウイッド ノート 2010-02-02
1.43.0 ファンクショナル/ファクタ、ファンクショナル/フォワード ノート 2010-05-06
1.44.0 メタステートマシン、ポリゴン ノート 2010-08-13
1.45.0 ノート 2010-11-19
1.46.0 Icl ノート 2011-02-21
1.46.1 ノート 2011-03-12
1.47.0 クロノ、幾何学、フェニックス、比率 ノート 2011年7月11日
1.48.0 コンテナ、ロケール、移動 ノート 2011-11-15
1.49.0 ヒープ ノート 2012-02-24
1.50.0 アルゴリズム、Functional / OverloadedFunction、
LocalFunction、ユーティリティ/ IdentityType
ノート 2012-06-28
1.51.0 コンテキスト ノート 2012-08-20
1.52.0 ノート 2012-11-05
1.53.0 原子、コルーチン、Lockfree、多重精度、
オデント
ノート 2013-02-04
1.54.0 ログ、TTI、タイプ消去 ノート 2013-07-01
1.55.0 Predef ノート 2013-11-11
1.56.0 Align、TypeIndex ノート 2014-08-07
1.57.0 ノート 2014-11-03
1.58.0 エンディアン、ソート ノート 2015-04-17
1.59.0 Convert、Coroutine2 ノート 2015-08-13
1.60.0 VMD ノート 2015-12-17
1.61.0 計算、DLL、ハナ、メタパース ノート 2016年5月13日
1.62.0 ファイバ、QVM ノート 2016-09-28
1.63.0 ノート 2016-12-26
1.64.0 プロセス ノート 2017-04-19

インストールまたはセットアップ

Boost Getting Startedを参照してください。

Boostライブラリのほとんどはヘッダーのみです。つまり、コンパイルやリンクする必要はありません。

Boostの最新バージョンを入手していることを確認してください:

  1. www.boost.orgをご覧ください
  2. 現在のリリースのダウンロードを探します。現在、ここにリンクしていますあなたがブーストウェブサイト上のどこにブーストをダウンロードできるかを示します
  3. お使いのオペレーティングシステムに適したアーカイブファイルを選択し、ダウンロードします。

ヘッダーのみのライブラリは、それぞれのヘッダーファイルを単純にインクルードすることで使用できます。

いくつかのBoostライブラリにはコンパイルが必要です:

  • ブースト。クロノ
  • Boost.Context
  • ブースト。ファイルシステム
  • Boost.GraphParallel
  • ブースト。アイスストリーム
  • Boost.Locale
  • ブースト.MPI
  • Boost.ProgramOptions
  • Boost.Python
  • Boost.Regex
  • ブースト。シリアル化
  • ブースト信号
  • Boost.System
  • Boost.Thread
  • Boost.Timer
  • Boost.Wave

また、以下のライブラリには、コンパイルが必要なコンポーネントがあります。

  • Boost.DateTime

  • ブースト。グラフ

  • ブースト。数学

  • Boost.Random

  • Boost.Test

  • Boost.Exception

Boostのソースは、サイトのダウンロードリンクから入手することができます。これにより、 SourceForgeのページに最新バージョン(2016年7月現在、 1.61.0)がリダイレクトされます。これはディレクトリ(C:\ local \ boost_1_61_0など)に解凍(un-taredなど)することができます。このディレクトリは、作成しているソフトウェアのインクルードパスに追加することができます。この後、 #include <boost/header/path.hpp> 使ってC ++ファイルにBoostヘッダを含めることができます。

Boostのライブラリの大半はヘッダーのみです。これらだけが必要な場合は、上記のソース配布がすべて必要です。ただし、コンパイルされたバイナリをビルドする必要があるライブラリの1つを使用する必要がある場合は、それも必要になります。

どのシステムでも、正しいバイナリを取得する最も信頼性の高い方法は、自分でビルドすることです。これらの指示は、 WindowsまたはLinux / Unix / POSIXでは若干異なります

Visual Studioを使用するWindowsでは、ライブラリを自分で作成する代わりに、 BoostのSourceForgeページ (2016年7月現在の1.61.0)からあらかじめ構築されたライブラリをダウンロードすることができます。このページでは、特定のVisual Studioビルドのバージョンをインストールするインストーラ、またはサポートされているすべてのVisual Studioバージョンのバイナリを含む7-zipファイル(boost_X_XX_X-bin-all-32-64.7z)を選択できます。これらのオプションには、ソース/ヘッダーとバイナリが含まれているため、上記のソース配布をダウンロードする必要はありません。 C:\ local \ boost_1_61_0などのディレクトリに展開/インストールし、そのディレクトリをインクルードパスに追加し、使用しているVisual Studioのバージョンに対応するバイナリを含むディレクトリを追加します(例:C: Visual Studio 2013 32ビットプロジェクトの場合はローカル\ boost_1_61_0 \ lib32-msvc-12.0)をライブラリパスに追加します。

Boostのインストールと実行(Cygwin)

(初心者レベル、IDE:CLion)

まず、Cygwinミラーからブーストをインストールします:install exeを開き、boostを検索し、パッケージをインストールします。


boostがインストールされた後、 /usr/include/boost ます。これがすべてです。すべての#include 文は、 #include <boost/archive/text_oarchive.hpp> ように、boostフォルダのパスになります。


あなたが選択したブーストファイルを.cpp ファイルに含めると、ライブラリーリンク て、ダウンロードしたブーストコードを検索するようにcmakeに指示するまで、IDEは選択したIDEでコンパイルされません。


あなたのブーストコードを検索するには、

find_package(Boost 1.60.0 COMPONENTS components_you_want)

# for example: 
find_package(Boost 1.60.0 COMPONENTS serialization)
 

次に、 include_directories(${Boost_INCLUDE_DIRS}) というディレクトリをインクルードしinclude_directories(${Boost_INCLUDE_DIRS})

最後に、実行可能ファイルを追加し、ライブラリをリンクします。

add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
 

プログラムを起動する前に、何かを含めるかコードを実行する前にboostが見つかったかどうかをテストして、エラーダンプを避けてください:

if (Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(YourTarget ${SOURCE_FILES})
    target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)        
endif()
 

私は含まれ-missing_libs 例えば、 -あなたがに実行されるエラーは、いくつかのブーストライブラリまたは別のがリンクされていないかもしれないということです、そしてあなたはそれを手動で追加する必要がありますので、 リンク 、私は以前の参照を。


まとめて、最終的なCMakeLists.txtファイルは次のようになります:

cmake_minimum_required(VERSION 3.7)
project(your_project)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)

if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(your_project ${SOURCE_FILES})
    target_link_libraries(your_project ${Boost_LIBRARIES})
endif()