29

我正在使用 bjam 为 MinGW 构建 Boost(我正在使用系统和文件系统):

bjam --toolset=gcc stage

它构建得很好,但我希望能够静态链接到它(我必须为最终产品提供一个文件)所以我尝试了:

bjam --link=static --toolset=gcc stage

但我得到相同的输出。有任何想法吗?

连续编辑第二个问题我在发布后不久就回答了:p 我想我会把这个留给其他人。

bjam --build-type=complete --toolset=gcc stage

肯定会建立动态和静态的。

4

4 回答 4

41

我认为链接是一种属性,而不是 bjam 的选项。这意味着在它之前不应该有--。

这是我只构建静态库的命令行(虽然是 Visual c++):

bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static

将其映射到您的原始构建命令我会说它应该看起来像这样:

bjam --toolset=gcc link=static stage

也许:

bjam stage --toolset=gcc link=static

尝试运行

bjam --help

有关 bjam 的属性和选项的更多信息。

于 2009-01-30T12:48:38.550 回答
8

只是要注意,随着更新的提升(2011 年 2 月),您现在也需要构建 bjam .. 由于某种原因,当前可下载的 bjam 无法正常工作。

所以首先:

cd ...\boost_1_45_0\tools\build\v2\engine\src

build.bat mingw

您需要将 bjam 添加到 PATH(从控制面板,而不仅仅是在 cmd 提示符下)。然后

cd ...\boost_1_45_0\

bjam --build-type=complete --toolset=gcc stage

我的设置是 Vista、Boost 1.45、MinGW 4.5,并从 cmd.exe 而不是 msys 构建。

http://code-slim-jim.blogspot.com/2011/02/boost-in-vista-using-mingw-and-cmdexe.html

于 2011-02-16T15:06:55.463 回答
0

我自己没有在 MinGW 中构建它,但我相信您的第一个构建将输出动态和静态库以及第二个仅输出静态库,因此如果您没有在构建之间清理构建目录,它可能看起来相同。

当您写“我必须有一个文件......”时,您的意思是您需要一个包含所有 boost 库的库吗?如果是这样,我怀疑您可能必须自己将它们“组合”在一起。

于 2009-01-30T06:21:27.677 回答
0

我使用以下命令行来构建 boost 的静态链接和动态链接版本:

bjam  "-sBUILD=debug release <runtime-link>static/dynamic <threading>multi" stage

这是通过 windows YMMV 上的 Visual c++ 完成的。

于 2009-01-30T12:41:32.043 回答