C++ 使用Boost库分发?

C++ 使用Boost库分发?,c++,boost,distribution,C++,Boost,Distribution,我对使用boost非常陌生,我似乎在任何地方都找不到关于如何在使用boost时分发应用程序的文档 很多库都是共享库,我不希望我的用户安装了boost,我只使用一个库(regex),那么有没有一种简单的方法可以将regex库打包到我的应用程序中,而不用使用静态版本进行编译?Linux 对于二进制发行版,我建议使用发行版的包管理,它应该考虑所有依赖项。 一些商业应用程序只使用二进制blob,您需要自己安装一个版本的boost 在linux上查找库有点困难。如果共享对象在编译时链接,它不会自动从当前目

我对使用boost非常陌生,我似乎在任何地方都找不到关于如何在使用boost时分发应用程序的文档

很多库都是共享库,我不希望我的用户安装了boost,我只使用一个库(regex),那么有没有一种简单的方法可以将regex库打包到我的应用程序中,而不用使用静态版本进行编译?

Linux 对于二进制发行版,我建议使用发行版的包管理,它应该考虑所有依赖项。 一些商业应用程序只使用二进制blob,您需要自己安装一个版本的boost

在linux上查找库有点困难。如果共享对象在编译时链接,它不会自动从当前目录加载共享对象(与使用dlopen在运行时加载相反)

必须使用LD_LIBRARY_PATH env变量或使用。两者都有缺点

窗户 没有办法包括DLL。通常的方法是将所有内容放入目录并压缩

二者都 要从源代码构建,您无论如何都需要boost源代码,因此不需要包含库

boost中的大多数库都只是头文件,regexp不是其中之一。包含此模块的DLL就足够了。 在Linux中,您可以使用以下方法检查二进制文件编译的共享库:

ldd binary

我想为linux发行,将来为windows发行。我还将保持它的开源,因此我将为用户提供源代码来构建和预构建二进制文件。如果您只使用regex,那么您的编译器很可能已经通过TR1支持regex。尝试包含。是的,这是选择它而不是其他不需要构建的正则表达式库的原因之一。虽然我不想冒险,如果不是所有的编译器都完全支持TR1,是的,我只是打算为独立于源代码的预构建应用程序提供.so和.dll文件。那么你说只需要获取编译的lib文件就可以了?对于正则表达式,我知道就像你说的,它不是一个仅头文件,所以我将为构建的正则表达式库提供源代码以及编译的lib文件?用户需要所有链接的共享库。对于Linux,您应该依赖包管理。对不起,我的意思是提供预构建的regex库,而不是依赖用户来构建它。对于源代码版本,我不必担心,如果用户想要构建它,我会让他们负责获取适当的库。如果仅仅通过提供.so或.dll文件,所有这些都可以正常工作,那么就很好了。我听说boost有一个工具,它可以提取和查找你的应用程序正在使用的所有库,有人知道吗?那么你想知道什么?可以提供.so文件。这是好的款式吗?可能不会,您应该使用libs的包管理。在Linux上,确实可以依赖包管理器,但是如果Linux发行版附带过时的Boost版本,并且您需要更新的功能,该怎么办?在这个场景中,分发Boost的部分(而不是依赖于包管理器)的问题是有意义的。