首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在boost-build中基于操作系统选择编译器选项

在boost-build中基于操作系统选择编译器选项
EN

Stack Overflow用户
提问于 2013-09-22 03:15:20
回答 2查看 548关注 0票数 2

目前,通过在命令行中设置工具集和参数,我可以使用boost在不同的平台上构建我的程序。例如:

Linux

代码语言:javascript
复制
b2

MacOS

代码语言:javascript
复制
b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++"

是否有一种方法可以在Jamroot文件中创建规则以根据操作系统决定使用哪个编译器?我在寻找这样的东西:

代码语言:javascript
复制
import os ;
if [ os.on-macos ] {
    using clang : <cxxflags>"-stdlib=libc++" <linkflags>"-stdlib=libc++c ;"
}

在linux中,它会自动决定使用gcc,但是在mac中,如果我不指定clang工具集,它将尝试(没有成功)用gcc编译它。

仅供参考,这是我目前的贾姆特(任何建议也感谢):

代码语言:javascript
复制
# 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 
;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-08 03:40:46

经过很长一段时间,我发现没有办法(除了非常讨厌)这样做。Boost.Build的目标是让用户定义工具集选项。

用户有几种指定工具集的方法:

  1. 例如,在带有--toolset=gcc的命令行中
  2. 在用户配置中,将其设置为用户编译的所有项目的user-config.jam
  3. 通过在site-config.jam中为所有用户设置站点配置

user-config.jam可以位于用户的$HOME或boost构建路径中。

site-config.jam应该位于/etc目录中,但也可能位于上述两个位置。

总之,为一个愉快的体验设置你的网站配置或用户配置,并为试图编译你的程序的用户编写一个很好的自述文件。

希望这能帮到别人。

票数 0
EN

Stack Overflow用户

发布于 2014-10-08 11:09:12

阿布怎么用贾姆特的?下面是我的。它根据环境变量中的内容,在Linux上的两个GCC版本之间进行选择,并在AIX上选择vacpp。

代码语言:javascript
复制
if [ os.name ] = LINUX
{
    switch [ modules.peek : ODSHOME ]
    {
        case *gcc-4*    : using gcc : 4.4 : g++-4.4 ;

        case *gcc-3.3*  : using gcc : 3.3 : g++-3.3 ;

        case *          : error Only gcc v4 and gcc v3.3 supported. ;
    }

}
else if [ os.name ] = AIX
{
    using vacpp ;
}
else
{
    error Only Linux and AIX supported at present. ;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18939911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档