【发布时间】: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