从指定的工具集到标记的基础部分有一个直接映射。因此,对于您指定使用
darwin.jam
工具集标记的开始将始终是
xgcc
(对于Xcode GCC)。第二部分,即编译器的版本号,通常是从编译器本身自动发现的。这个
达尔文果酱
工具集代码使用
-dumnpversion
用于发现该版本的选项(请参见
darwin.jam
第123行)。所以有几点:
-
对于Xcode来说
toolset=darwin
对于违约
g++
.
-
对于其他非默认版本,必须设置
site-config.jam
或
user-config.jam
告诉Boost Build您拥有的编译器在哪里和哪些(请参见
BB Configuration
文档)。
-
这个
toolset=darwin-<some_version>
匹配您在配置中指定的内容。
-
这个
达尔文果酱
工具集支持根据您试图构建的内容对编译器进行智能选择,以使其更简单。
例如,我在iOS开发中使用类似以下的方法:
using darwin : : /Xcode-path/usr/bin/g++-4.0 ;
using darwin : : /Xcode-path/usr/bin/g++-4.2 ;
using darwin : 4.2~iphone
: /Xcode-path/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv6
: <striper>
: <architecture>arm <target-os>iphone
;
using darwin : 4.2~iphonesim
: /Xcode-path/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2
: <striper>
: <architecture>x86 <target-os>iphone
;
我可以:
-
bjam toolset=darwin-4.0
--对于使用GCC4.0的常规OSX构建。导致标签
xgcc-42
.
-
bjam toolset=darwin-4.2
--与OSX和GCC4.2类似。我会得到一个标签
XGCC-42
.
-
bjam toolset-darwin architecture=arm target-os=iphone
--使用GCC4.2构建iPhone设备。标签最后也会
xgcc42
这是碰撞。但是在这些标签中我们可以占多少是有限制的。而且,这通常不是问题,因为不管怎样,一个将构建的结果跨平台分离。
通过添加到配置中,您可以使用LLVM编译器之一进行设置:
using darwin : 4.2~llvm~gcc : /Xcode-path/user/bin/llvm-g++ ;
并调用
bjam toolset=darwin-4.2~llvm~gcc
. 不幸的是,标签也会
xgcc-4.2
(同样,它是基于使用
达尔文果酱
)因此,您需要将生成的lib与其他gcc构建分离。
同样不幸的是,除了在代码中之外,没有记录在案的将工具集映射到标记值的位置(参见bb
common.jam
线路820至861)。