我正在尝试设置一个boost的子集,并使用bjam对其进行正确的编译,但是我没有得到想要的结果。我正在使用Boost 1.37.0在Windows上工作。
假设我要构建/安装库smart_ptr和文件系统。我特意选择了仅 header 的库和一个需要编译的库。我希望将它们构建到类似于如果我使用bjam构建完整的boost安装(即不指定任何--with-libraryX)但没有我不感兴趣的所有库的目录结构。 。
我的第一种方法是在bjam中使用--with-filesystem --with-smart_ptr,但是似乎无法识别smart_ptr(我尝试使用smartptr和smart-ptr均未成功)。我猜这是因为它是仅 header 的库。
当我删除它并仅使用--with-filesystem时,它似乎将所有库头文件复制到安装路径,并且仅为文件系统构建库。库构建行为是我希望的行为,但是我在boost目录中安装了许多我不感兴趣的库头文件。
我的第二种方法是使用bcp复制相关项目。在我只得到我关心的项目(及其依赖项)的意义上,这确实可以解决。但是,他们没有提供任何make文件来构建被复制的库。这意味着我需要为所有非仅 header 的库设置项目文件,然后手动构建它们。
所以我的问题基本上是,是否有一种选择性地构建boost的方法,该方法仅复制我感兴趣的库的头文件,而仅构建我感兴趣的非非头文件的库文件(以及它们是boost的库)取决于类(class))?
可能有很多基于手动/脚本的解决方案,但是如果我可以运行某些东西,仅使用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解决方案具有用于项目的make文件,但是我需要将tools目录和boost目录的根目录复制到我复制所有libs的位置,以使一切正常运行。
关于c++ - 在Windows中构建Boost的子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/439402/