如何从 Visual C++ IDE 中构建 boost 库?

how can I build the boost libraries from within the Visual C++ IDE?

我的想法是在我的项目中有一个地方,我可以在其中编辑整个最终项目的 compiler/linker 设置。 这变得很重要,因为在 x64 上存在混合 AVX 而不是 AVX 代码的问题。 如果这(使用 Visual C++ IDE 编译 boost)是不可能的,那么在 boost 构建系统中哪里可以更改编译器设置?

PS。 要使用任何需要的定义编译的 .cpp 文件列表已经足够了。我不明白为什么人们认为开发人员不能从这里开始(最基本的信息)。

PPS。 由于我在这里的一条评论(解释我提出这个问题的动机)已经消失(可能被 "moderators" 之一删除)我再次在这里添加它: 如果您不理解一步构建过程的必要性,那么您不应该在这里回答问题或对它们进行投票。

使用 Boost 的 JAM 构建系统构建库。很多 Boost 都是不需要显式 linked 的头文件,但是如果您需要(线程库、系统等...)静态 link 到 Visual C++ 中的那些 .libs .

This becomes important, since on x64 there is the problem of mixing AVX and not AVX code.

混合AVX和SSE代码没有问题,只要正确编写AVX代码(即在输入SSE代码之前清除ymm寄存器的高128位)。在 SSE 和 AVX 交互方面,x64 没有什么特别之处。

If this (compiling boost using the Visual C++ IDE) is not possible, where in the boost build system can one change the compiler settings?

即使理论上可行,这也是一项极其艰巨的任务。 Building Boost 涉及许多检查,每个检查基本上意味着编译并可能 运行 一个测试程序。然后这些检查会影响 Boost 编译。我认为这不可能在 Visual Studio 项目中重现。

为了在构建 Boost 时指定命令行参数,您可以使用 cxxflagscflagslinkflags 选项(参见 here),例如:

b2 variant=release "cxxflags=/arch:AVX" stage

这个很简单.. Boost由C++源文件和头文件组成。因此:

  1. 将 Boost 根目录添加到您的包含路径。
  2. 对于您使用并具有 *.cpp 源文件的任何库,只需将这些源文件添加到您的项目中即可。
  3. 查看库的 Boost 构建文件 (Jamfiles) 并添加他们想要的通常最少的定义集。大多数时候没有什么可添加的。

就是这样。