概要
M1搭載のMacでboostライブラリを使おうとしたら, Error や Warningが多数でました. ここでは次の形でコンパイルが通ったので, 備忘録的に書いておきます.
開発環境
- macOS Ventura 13.2.1
- g++ : Apple clang version 14.0.0 (clang-1400.0.29.202), Target: arm64-apple-darwin22.3.0
- Boost : boost_1_18_0
エラーメッセージ
error: unknown type name 'constexpr'
error: a space is required between consecutive right angle brackets (use '> >')
#error "This library now requires a C++11 or later compiler - this message was generated as a result of BOOST_NO_CXX11_RVALUE_REFERENCES being set"
エラーを見ていると, boost内部でのコンパイルエラーのようです.
g++は, Apple自身が提供しているものです. バージョンを見る限り, C++11には対応済みです.
解決策
コンパイルオプションとして, 次を指定します.
-std=c++11
これにより, C++11の拡張やライブラリを使用することが可能となります. Boost.Math は, C++14以降でしか使えないという Warninもあります. 次の指定すると, このWarningも消えます.
-std=c++14
まだ sprintfのWarning もありますが, 気にしないことにします. エラーは消えましたので, コンパイルは通るようになりました.
追記
今回は, Boost を https://www.boost.org/ からダウンロードして, コンパイルするところからはじめましたが, Homebrew を使うと簡単にインストールできます. こちらのライブラリでもコンパイルは通りました.
なお, コンパイル時には,
-I(インクルードファイルのディレクトリ)
-L(ライブラリのディレクトリ)
を付けることを忘れないようにしましょう.