【问题标题】:How to make sure that all Boost .dll & .lib files are included with build?如何确保构建中包含所有 Boost .dll 和 .lib 文件?
【发布时间】:2019-11-21 05:41:42
【问题描述】:

在 Visual Studio 2017 中,我能够构建和运行包含 Boost v1.69.0 作为 VS 的预构建二进制文件的 C++ 项目。 但是,现在我想分发我的项目的发布副本,其中包括所有必要的 .dll &.lib 文件。如何确保所有 Boost .dll&.lib 文件都包含在最终版本中?
以下是我的项目中使用的 Boost 库列表:

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/sinks/text_file_backend.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/sources/record_ostream.hpp>

【问题讨论】:

  • 大多数开源项目在其文档中列出了它们的依赖项,但不分发它们。由项目的用户确保安装了必要的依赖项。事实上,像静态库这样分发二进制文件可能很困难,因为您的项目的用户可能使用不同的编译器,其 ABI 与构建库时使用的 ABI 不同。
  • 我同意。您不应该分发您的代码使用的 boost 库的子集。就像大多数其他开源项目一样,只需将boost列为您的代码要求即可。
  • @Someprogrammerdude 项目将在内部分发,并将在我们的生产服务器上使用。它不会作为开源项目分发。
  • 那是另一回事,您仍然可以将其作为开源项目发布,但只能在内部发布。否则,如何构建项目?你如何列出你应该链接的库?您是静态链接还是使用 DLL?
  • @Someprogrammerdude 版本位于组织成员可以使用的 .MSI 文件中。对于将安装软件的最终用户(即自包含)来说,它应该是无故障的。在 VS Studio 中,在项目属性中,VC++ 目录 > 包含目录 > 指向安装 Boost 的根目录(C:\Local\Boost1.60.0\x32)。和 Linker>General>Additional libraries> C:\Local\Boost1.60.0\x32\lib32-msvc-14.1\ - .dll&.lib 文件所在的位置。

标签: c++ visual-studio boost boost-log


【解决方案1】:

有 BOOST 实用程序 - BCP 我认为这个实用程序可能对您解决问题有用。

以下是手册的引述:

bcp 实用程序是一种用于提取 Boost 子集的工具,对于希望将其库与 Boost 分开分发的 Boost 作者,以及希望将 Boost 子集与他们的应用程序一起分发的 Boost 用户,它非常有用。

bcp 还可以报告您的代码依赖于 Boost 的哪些部分,以及这些依赖项使用了哪些许可证。

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多