目前,我可以通过在命令行中设置工具集和参数,在不同平台上使用 boost build 来构建我的程序。例如 :
Linux
b2
苹果系统
b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++"
有没有办法在 Jamroot 文件中创建规则来根据操作系统决定使用哪个编译器?我正在寻找这些方面的东西:
import os ;
if [ os.on-macos ] {
using clang : <cxxflags>"-stdlib=libc++" <linkflags>"-stdlib=libc++c ;"
}
在 linux 中,它会自动决定使用 gcc,但在 mac 中,如果我没有指定 clang 工具集,它会尝试(没有成功)用 gcc 编译它。
仅供参考,这是我目前的 jamroot(任何建议也值得赞赏):
# Project requirements (note, if running on a Mac you have to build foghorn with clang with libc++)
project myproject
: requirements <cxxflags>-std=c++11 <linkflags>-std=c++11 ;
# Build binaries in src
lib boost_program_options ;
exe app
: src/main.cpp src/utils src/tools boost_program_options
;