我正在为一个小项目使用 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)?