6

我有一个我正在从事的项目(针对学校),我正在研究 Boost 库以获取解决方案。我需要某种方式将所需的 Boost 源代码与我的应用程序一起分发,以便可以在系统上不安装库的情况下对其进行编译。(学校电脑几乎没有你能提到的任何东西。学校去年刚刚安装了 CVS。但他们确实有 VS2005)

注意:我在 Vista 上使用 Visual Studio 2005。我的系统上有 Boost 1.34.1 我使用了自动安装程序。我遇到的文档说明了有关使用 BCP 命令的内容,但该命令似乎没有复制任何内容。(我使用绝对路径来调用 BCP,所以我最终不会调用错误的命令。)

编辑:我正在尝试使用 RegEx 库。

编辑:我用于 BCP 的命令是:"c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" boost/regex.hpp regex\

它返回:no errors detected

4

6 回答 6

5

这取决于您使用的库。如果您使用的是仅头文件库(大多数 boost 库都是,一些值得注意的例外是信号、序列化和日期/时间),您可以复制这些头文件。否则,您也需要复制 cpp 文件。我的建议是将它们包含在您的项目中。

所以,这就是你要做的:你从你的项目设置(工具->选项->项目和解决方案->vc++目录->包含文件)中删除boost包含路径。尝试编译。看看哪个包含失败。将该文件从您的 boost 目录复制到您的项目目录。起泡、冲洗、重复,直到您的项目编译完成。

如果您使用的库需要 .cpp 文件,您将在链接时收到错误消息。将您使用的库的所有 .cpp 文件复制到项目目录并将它们全部添加到您的解决方案中。重建并交叉手指。

有关更详细的答案,请发布您正在使用的库。

于 2008-09-28T13:57:38.343 回答
2

根据您使用正则表达式的评论,您可以执行以下操作:下载“正常”提升分发 zip 文件。在某处解压。转到库/正则表达式/src。将该目录中的所有 .cpp 文件复制并粘贴到您的项目目录中。将它们添加到您的 Visual Studio 项目中(右键单击,“添加”->“现有项”)。然后转到 boost/regex 并将其中的所有内容(头文件)复制到您的项目目录(包括子目录)。将您自己的 .cpp 和 .h 文件中的所有包含从 #include 更改为“regex.hpp”,以便它包含本地目录中的标头,而不是系统范围内安装的标头。确保从您的项目设置中删除系统范围的包含路径,就像我在上一篇文章中所说的那样。

然后,编译你的代码。您将收到许多“缺少包含文件”错误,因为正则表达式依赖于其他 boost 库。重复整个过程:转到 boost/xxx ,其中 xxx 是正则表达式正在寻找的库。您可以从错误消息中推断出库。将编译器要求的所有内容复制到您自己的项目目录中。在它工作之前,您可能需要稍微调整一下目录布局。这实际上是一步一步的方法,每一步都是相同的:识别丢失的文件,复制它,查看是否找到并修复了该包含,然后继续下一步。恐怕这是无聊的工作。

您可以使用 bcp 将这一切自动化,但对于像学校项目这样的一次性项目,我不会打扰;仅当您认为将来的项目需要您提供独立的 zip 文件时。

于 2008-09-29T15:24:36.520 回答
2

Try calling bcp with this command:

"c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" --boost="c:\Program Files\boost\boost_1_34_1" regex regex

--boost tells bcp where boost is installed, the first regex is the name of the modules, the second is the destination directory.

Oh, and if you haven't already noticed, there are Visual C++ makefiles in libs\regex\build\.

于 2008-09-29T10:24:30.687 回答
1

这对我来说似乎有点奇怪。如果您正在分发源代码,那么您分发给的人应该能够安装 boost。然后,如果他们已经有了 boost,没有重复和混乱,或者如果他们没有并且您需要一个构建的库,他们将为他们的系统构建正确的库。如果您分发的人不适合安装 boost,那么我建议在安装包中分发二进制文件,以使其尽可能容易。

于 2008-09-28T14:23:15.067 回答
0

我以前遇到过这种情况,将 boost 嵌入到我的项目中。每个单独的 boost 库都带有各种项目文件,用于使用不同的 make 系统(Jam、make、Visual Studio 6...)进行构建,但对于较新版本的 VS,它们从未如此出色。

我总是喜欢创建一个新的项目文件并将 boost 直接嵌入到我的项目中。这很简单,您只需添加所有源文件并正确设置项目选项。但是,有一个警告,那就是您必须将库输出文件命名为 boost 所做的那样,因为它们的包含文件依赖于此。

完成此操作后,您可以像分发项目中的任何其他文件一样分发 boost 库。

于 2008-09-28T14:06:34.763 回答
0

编译boost就是这样的PITA;只有积极进取的学生才能做到。您是否考虑过捆绑安装程序?

于 2009-08-21T13:37:59.573 回答