c++ - b2 vs bjam 用于构建 Boost 库

标签 c++ boost dll static-libraries import-libraries

我使用 b2.exebjam.exe 为 VS2013 构建了 64 位架构的 Boost。根据 Boost documentation , b2 必须在 bjam 上使用。我注意到的差异是:

  1. b2 中的 .lib 文件的大小与相应的 bjam 文件的大小不同。
  2. 使用 bjam 提供动态 .lib 库(不带 -s 标记,如 here 所述),但它不提供要链接到的 .dll 文件(那么现在该怎么办?) ,而使用 b2 会同时提供静态库和动态库以及 .dll 文件。但使用 b2 的问题是,它提供了两个动态 .lib 文件 - 一个以 boost_xxxx.lib 开头,另一个以 libboost_xxxx.lib 开头,两者大小不同。 这是为什么?

我还提到了使用构建选项 --build-dir 的不同构建目录,但是这个目录有什么用呢?它由 .obj、.rsp 以及相应的 .dll 和 .lib 文件组成。这个目录可以删除吗?

以下是我用来构建 Boost 的命令:

  1. b2:

    b2 toolset=msvc-12.0 --build-type=complete architecture=x86 address-model=32 install --build-dir=<build-dir> stage --stagedir=<stage-dir> -j2
    
  2. bjam:

    bjam stage --stagedir=<stage-dir>
    

最佳答案

b2 和 bjam 是相同的文件,只是它们的名称不同。不同的结果是用不同的参数调用它们的结果。

关于首选名称:调用 ./b2 --help./bjam --help 都产生名称 b2

关于c++ - b2 vs bjam 用于构建 Boost 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31351230/

相关文章:

c++ - 使用套接字c++ eclipse删除数组

c++ - 如何调用绑定(bind)了所有参数的 boost::function 对象

dll - 我应该签署我的 DLL 吗?

C++ boost::shared_ptr 作为一个类的成员并重复设置它的值

boost - 为什么我应该在 boost::asio 中使用自定义处理程序分配器 (custom_alloc_handler)?

assembly - 如何在普通 DLL 中找到 "strange"ROP gadget?编译器永远不会这样做。 (面向返回的编程)

dll - 什么是非托管 DLL?什么是非托管代码?

c++ - 我在删除功能中遇到垃圾

c++ - 为什么 C++ 在需要字符串时允许将 char 数组作为参数?

c++ - 组织外部库的编译器依赖路径