私はBoost.Buildを小さなプロジェクトに使用しており、C++ 17のサポートを有効にしたいと考えています。 this answerによると、私は次のようにコンパイラフラグ-std=c++17
を渡すことができますし、フラグがすべての実行可能ファイルとライブラリに伝播されます。私はgcc7でtoolset=gcc
を使用する場合私のブーストjamfileで条件付きcxxflags機能を作成するにはどうすればよいですか?
import feature ;
feature.feature cpp17 : on : composite optional propagated ;
feature.compose <cpp17>on : <cxxflags>"-std=c++17" ;
project myproject : requirements <cpp17>on ;
これが正常に動作します。しかし、他のコンパイラでは、C++ 17モードが別の方法で有効になります。例えば、Clang 3.9は、-std=c++17
の代わりに-std=c++1z
が必要です。 MSVCでは、C++のバージョンはMSVCのバージョンによって異なります。
(多かれ少なかれ)ツールセットに依存しない方法で、jamfileにC++バージョン(C++ 11/C++ 14/C++ 17)を設定する方法はありますか?
ご回答いただきありがとうございます。私はあなたのソリューションを試しましたが、私はこれらのエラーを取得しました: 'エラー:コンポジットフィーチャの展開により、の値が矛盾します'エラー:値:clang: -std = C++ 1z gcc: -std = C++ 17 「エラー:1つのコンポジットプロパティがにありました」これはいくつかの新機能ですか? Boost.Build 2015.07-gitをboost 1.62.0から使用しています。 –
pschill