在Windows中构build一个boost子集

我正在尝试设置一个子集的boost,并使用bjam正确编译,但是我没有得到我正在寻找的结果。 我在使用boost 1.37.0在windows上工作。

比方说,我想build立/安装库smart_ptr和文件系统。 我故意select了一个只有头文件的库和一个需要编译一个库的库。 我希望它们被构build到一个类似于我将得到的目录结构中,如果我用bjam(即不指定任何–with-libraryX)构build完整的boost安装,但是当然没有我不感兴趣的所有库。

我的第一个方法是在bjam中使用–with-filesystem –with-smart_ptr,但是它好像不能识别smart_ptr(我试过smartptr和smart-ptr没有成功)。 我想这是因为它只是一个头文件库。

当我删除它,只有–with-filesystem它似乎将所有库头文件复制到安装path,只build立文件系统的库。 图书馆build设的行为是我所希望的,但是我有很多我不感兴趣安装在boost目录中的库文件头文件。

我的第二种方法是使用bcp来复制相关的项目。 这确实是在我只有我关心的项目(和他们的依赖)的意义上。 但是,他们没有提供任何构build被复制的库的make文件。 这意味着我将需要为所有不只是标题的库设置项目文件,并手动构build它们。

所以我的问题是基本上,是否有select性地build立提升的方式,只复制我感兴趣的图书馆的头文件,而只build立我感兴趣的非头文件库的库文件(以及它们是boost库依赖于课程)?

可能有大量基于手动/脚本的解决scheme,但是如果我只能使用bjam来运行,那么对于我来说,添加新的库或升级到新的boost版本将会非常简单。

编辑:添加完整的命令行为第一种方法:

bjam install --prefix=c:\temp\boostsmall --build-dir=C:\temp\boostsmalltemp --layout=system --with-filesystem variant=debug link=static threading=multi runtime-link=static 

将scoped_ptr更改为smart_ptr

解决了它。

bcp解决方案已经为项目创建了文件,但是我需要将工具目录和boost目录的根目录复制到我复制所有库的位置,以便运行。

好问题! 我想,这是我最近弄清楚的一个问题。

我已经安装了完整的Boost库,包括需要单独编译的库。

我设法为我正在使用以下步骤的特定应用程序创建一个Boost库(regex)的子集:

  1. 首先确保首先安装bcp可执行文件。 在Boost根文件夹中,导航到tools / bcp文件夹,然后在这里运行bjam.exe。 对我来说,在[Boost路径] \ bin.v2 \ tools \ bcp \ msvc-10.0 \ release \ link-static目录中创建了bcp可执行文件:

  2. 然后创建您想要Boost子集驻留的文件夹。 这可能已经是您正在使用的Visual Studio项目的文件夹。

  3. 运行您创建的bcp exectubale,确保包含您希望包含的库,以及boost根目录和目标文件夹的位置。 观察所需的Boost组件(例如正则表达式)如何包含在目标文件夹中。

    bcp.exe regex –boost =“C:\ Program Files \ boost_1_55_0 \ boost_1_55_0”C:\ Projects \ RegexProject \ BoostLite

  4. 在您的Visual Studio项目中,将其他包含目录和库设置为指向已创建的“Boost lite”文件夹。

  5. 最后一件事 – 我想前面已经介绍过了 – 我需要进入常规的Boost文件夹设置,并复制包含子集版本所需的所有lib文件的所需stage / lib文件夹,并将它们复制到这里,只有几个正则表达式相关lib文件在我的情况。

我发现这对我有用。 任何反馈来自其他人的经验,将不胜感激。

在这里可以找到描述相同内容的博客文章 。