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

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

本文关键字:构建 boost C++IDE Visual      更新时间:2023-10-16

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

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

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

使用Boost的JAM构建系统构建库。Boost的大部分都是头文件,不需要显式链接,但如果需要(线程库、系统等)静态链接到Visual C++中的.lib。

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

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

就是这样。

这变得很重要,因为在x64上存在混合AVX和非AVX代码的问题。

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

如果这(使用Visual C++IDE编译boost)是不可能的,那么在boost构建系统中,哪里可以更改编译器设置?

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

为了在构建Boost时指定命令行参数,可以使用cxxflagscflagslinkflags选项(请参阅此处),例如:

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