小さなプロジェクトに Boost.Build を使用しており、C++17 のサポートを有効にしたいと考えています。この回答によると、次の方法でコンパイラ フラグを渡すことができ-std=c++17
、フラグはすべての実行可能ファイルとライブラリに伝達されます。
import feature ;
feature.feature cpp17 : on : composite optional propagated ;
feature.compose <cpp17>on : <cxxflags>"-std=c++17" ;
project myproject : requirements <cpp17>on ;
これはtoolset=gcc
、gcc7 で使用すると問題なく動作します。ただし、他のコンパイラでは、C++17 モードは別の方法で有効になっています。たとえば、Clang 3.9-std=c++1z
では、代わりに-std=c++17
. MSVC では、C++ のバージョンは MSVC のバージョンに依存します。
(多かれ少なかれ) ツールセットに依存しない方法で jamfile に C++ バージョン (C++11 / C++14 / C++17) を設定する方法はありますか?