xcode – `bjam –toolset =`和Apple编译器的标签值?
使用bjam构建Boost二进制库时,可以通过使用–toolset =选项的某些值来指定要使用的编译器,而不指定特定的编译器版本.例如:
bjam –with-serialization –toolset = msvc 工具集值msvc告诉bjam在系统中搜索某些版本的Microsoft Visual C,然后使用它来构建Boost.Serialization库的许多变体.生成的库将包含一个标记,指示实际使用的工具集.例如,上面的命令创建如下文件: libboost_serialization-vc100-mt-s-1_44.lib libboost_serialization-vc100-mt-sgd-1_44.lib ... 文件名中的字符串vc100是一个工具集标记,表示找到了Microsoft Visual C 2010编译器版本并用于构建库. [有关Boost库文件命名约定的更多详细信息,请参见here.] 也可以使用–toolset =选项的某些其他值来指定编译器的特定版本.例如: bjam –with-serialization –toolset = msvc-9.0 告诉bjam,即使我的系统上可能有多个编译器,我希望它专门使用Microsoft Visual C 2008.生成的库包含标记字符串vc90,表示使用Microsoft Visual C 2008构建它们. 对于Mac上的新编译器,Boost文档似乎有点过时(例如,如何区分GCC,LLVM-GCC和LLVM?) 我的问题是,Mac上的Xcode 3和Xcode 4中的特定编译器版本的其他bjam –toolset =值及其对应的标签是什么(不是像darwin这样的通用编译器名称值)?这些记录在哪里?即使Boost尚不支持构建具有某些版本的Boost库,是否已指定工具集和标记值? 请帮助替换此表中的??? s: TOOL AND VERSION --toolset= TAG ====================================================== Microsoft Visual C++ 2008 msvc-9.0 vc90 Microsoft Visual C++ 2010 msvc-10.0 vc100 Apple (1) GCC 4.0 (2) ??? xgcc40 Apple GCC 4.2 ??? xgcc42 Apple LLVM GCC 4.2 ??? ??? Apple LLVM compiler 1.5 (2) ??? ??? Apple LLVM compiler 2.0 (3) ??? ??? (1)Apple生产自己版本的GCC和LLVM编译器,以添加特定于Apple的扩展和行为. (2)仅适用于Xcode 3. (3)仅适用于Xcode 4. 解决方法
从指定的工具集到标记的基础部分有直接映射.因此,对于您指定使用darwin.jam工具集的任何Apple Xcode编译器,标记的开头始终为xgcc(对于Xcode GCC).第二部分,即编译器的版本号,通常是从编译器本身自动发现的. darwin.jam工具集代码使用-dumnpversion选项来发现该版本是什么(参见
darwin.jam第123行).所以有一些事情:
>对于Xcode,默认g将始终为toolset = darwin. 例如,我使用类似以下内容进行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 – 对于使用GCC 4.0的常规OSX构建.这导致标签xgcc-42. 您可以通过添加到配置来使用其中一个LLVM编译器进行设置: using darwin : 4.2~llvm~gcc : /Xcode-path/user/bin/llvm-g++ ; 并使用bjam toolset = darwin-4.2~llvm~gcc调用.不幸的是,标签也是xgcc-4.2(同样,它基于使用darwin.jam).因此,您需要将生成的库与其他GCC构建隔离开来. 同样不幸的是,除了代码之外,没有记录将工具集用于标记值的位置(参见BB common.jam第820行到#861). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |