如何构建支持 C++0x 的 Boost?

发布于 2024-09-02 11:31:41 字数 97 浏览 3 评论 0原文

我不知道如何使用 C++0x 编译器构建 Boost。必须给 bjam 提供哪个选项?应该修改 user.config 文件吗?有人可以帮助我吗?

最好的, 维森特

I don't know how to build Boost with C++0x compilers. Which option must be given to bjam? Should the user.config file be modified?Can someone help me?

Best,
Vicente

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浪漫人生路 2024-09-09 11:31:41

我已经找到答案了。我正在等待类似“std”的功能,并按如下方式调用它:

bjam std=0x

但目前我们需要使用低级变量 cxxflags 并添加特定的编译器标志。例如,对于 gcc,我们可以做

bjam toolset=gcc cxxflags=-std=gnu++0x

其他编译器将需要不同的设置。

等待新的 Boost.Build 功能,您还可以定义自己的工具集,如下所示: 添加 user.config 或 site.config 文件

using gcc
   : std0x
   : "/usr/bin/g++" # your path to the C++0x compiler
   : <cxxflags>-std=gnu++0x
   ;

现在调用为

bjam toolset=gcc-std0x

I have found the answer. I was waiting for a features something like 'std' and call it as follows:

bjam std=0x

but currently we need to use the low level variables cxxflags and add the specific compiler flags. For example for gcc we can do

bjam toolset=gcc cxxflags=-std=gnu++0x

Other compilers will need a different setting.

Waiting for a new Boost.Build feature, you can also define your own toolset as follows: Add the user.config or site.config file

using gcc
   : std0x
   : "/usr/bin/g++" # your path to the C++0x compiler
   : <cxxflags>-std=gnu++0x
   ;

And now call as

bjam toolset=gcc-std0x
戈亓 2024-09-09 11:31:41

要使用 clang 进行编译,请使用 cxxflagslinkflags

./b2 \
    ...
    cxxflags="-std=c++0x -stdlib=libc++" \
    linkflags="-stdlib=libc++" \
    ...

-v 传递给 cxxflags 在调试时也很有帮助。

To compile using clang, use the cxxflags and linkflags:

./b2 \
    ...
    cxxflags="-std=c++0x -stdlib=libc++" \
    linkflags="-stdlib=libc++" \
    ...

Passing a -v to cxxflags is also helpful when debugging.

你在看孤独的风景 2024-09-09 11:31:41

使用类似这样的内容:

./bootstrap.sh --with-toolset=gcc --prefix=/usr/local

./b2 -j12 toolset=gcc variant=release link=shared threading=multi address-model=64 cxxflags=-std=c++11 install 

-j12 用于并行(12 个线程)构建
请使用 -std=c++11 以获得更好的兼容性,并使用 -std=gnu++11 进行 gnu 扩展(仅适用于 gcc)

如果未构建 boost::mpi, (参见上述命令的输出)-> 请编辑 user-config.jam

如果您只想构建某些组件, :
添加:

--with-libraries=system,thread,serialization

例如

,这是来自 travis 的 framework 的改编脚本(调整 ROOT_PATH):

BOOST_DOWNLOAD_URL="http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download"
BOOST_BUILD=${ROOT_PATH}/boostBuild
mkdir -p ${BOOST_BUILD}
wget --no-verbose --output-document="${ROOT_PATH}/boost.tar.bz2" "$BOOST_DOWNLOAD_URL"
cd ${BOOST_BUILD}
tar jxf "${ROOT_PATH}/boost.tar.bz2" --strip-components=1 -C "${BOOST_BUILD}"
./bootstrap.sh --with-toolset=gcc --with-libraries=system,thread,serialization,filesystem,chrono,atomic,date_time
sudo ./b2 -j12 toolset=gcc threading=multi link=shared release install

安装到 /usr/local 中。

Use something like this:

./bootstrap.sh --with-toolset=gcc --prefix=/usr/local

./b2 -j12 toolset=gcc variant=release link=shared threading=multi address-model=64 cxxflags=-std=c++11 install 

The -j12 is for parallel (12 threads) build
use -std=c++11 for better compatibility and -std=gnu++11 for the gnu extensions (only for gcc)

if boost::mpi is not build (see the output of above command) -> edit the user-config.jam

if you want to build only certain components:
add:

--with-libraries=system,thread,serialization

for example

Here is an adapted script from my framework from travis (adjust ROOT_PATH):

BOOST_DOWNLOAD_URL="http://sourceforge.net/projects/boost/files/boost/1.58.0/boost_1_58_0.tar.bz2/download"
BOOST_BUILD=${ROOT_PATH}/boostBuild
mkdir -p ${BOOST_BUILD}
wget --no-verbose --output-document="${ROOT_PATH}/boost.tar.bz2" "$BOOST_DOWNLOAD_URL"
cd ${BOOST_BUILD}
tar jxf "${ROOT_PATH}/boost.tar.bz2" --strip-components=1 -C "${BOOST_BUILD}"
./bootstrap.sh --with-toolset=gcc --with-libraries=system,thread,serialization,filesystem,chrono,atomic,date_time
sudo ./b2 -j12 toolset=gcc threading=multi link=shared release install

which installs into /usr/local.

唯憾梦倾城 2024-09-09 11:31:41

我发现了一篇使用 clang 编译 Boost 的文章: http://blog .llvm.org/2010/05/clang-builds-boost.html。或许可以将其中提出的使用 Boost.Jam 编译 Boost 的更改修改为您最喜欢的 C++0x 编译器。

I came across an article for compiling Boost using clang: http://blog.llvm.org/2010/05/clang-builds-boost.html. It might be possible to adapt the changes proposed there for compiling Boost using Boost.Jam to your favorite C++0x compiler.

一片旧的回忆 2024-09-09 11:31:41

此外,您还可以更改一个文件的编译标志 像这样:

exe test : test.cpp :-std=gnu++0x ;

Also, you can change compilation flags for one file like this:

exe test : test.cpp : <cxxflags>-std=gnu++0x ;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文