1

我想只安装库的 mpl 和预处理器部分,但如果我使用这个命令,它会尝试构建和安装所有这些:

./bootstrap.sh --with-libraries= --prefix=<my lib path>

我看到它正在尝试,因为它正在执行编译器。使用./b2 -n还可以显示正在执行的命令。

有谁知道发生了什么?--with-libraries=的默认值应该都是根据帮助:

--with-libraries=list     build only a particular set of libraries,
                          describing using either a comma-separated list of
                          library names or "all"
                          [all]
--without-libraries=list  build all libraries except the ones listed []

Empty 不应默认为 all,Empty 应表示为空。不指定--with-libraries=应该默认为 all。

此外,--without-libraries=all也不起作用。考虑到这个图书馆已经存在了这么久,这有点令人失望。你会认为这些人会检查这样一个简单的边界情况。:(

4

2 回答 2

1

除了查看所有库然后在 --without-libraries= 标志之后指定它们之外,似乎没有任何方法。但是,看起来它实际上并没有做任何事情,这意味着,我可以将头文件夹复制到我想要的包含目录中。

于 2013-04-30T07:46:49.560 回答
0

根据我在升级 boost 时的经验,运行一些测试来查看 boost 是否与您的系统/编译器兼容。在 [我们的] 案例中,我们需要filesystemand system,所以这是我们在boost 1_51_0的情况下使用的方法。我希望它会有所帮助。注意:我们只需要可以使用共享库 (.so) 编译的静态库 (.a)。这就是我们添加的原因cxxflags=-fPIC,然后我们将 .a 文件复制到lib64目录中。

tar xf boost_1_51_0.tar.gz
rm boost_1_51_0.tar.gz
./bootstrap.sh --with-libraries=filesystem,system --exec-prefix=$(pwd)
./b2 cxxflags=-fPIC
mkdir lib64
cp $(find . -name '*.a' -print | grep -v stage | grep release ) lib64
cd lib64
# Now you can delete any libraries you don't need.

另请注意,您可以调用./bootstrap.sh --show-libraries以查看所有可用的库。

于 2013-04-25T21:46:03.650 回答