如何在 Windows 中使用 MASM 构建 Boost(来自 github)?

How to build Boost (from github) with MASM in Windows?

去年 Boost(来自模块化 boost git 存储库)可以使用 these steps 在 Windows 中构建。

差不多一年后,我使用这个食谱取得了很大进展:

  1. 使用 mingw-get-setup
  2. 安装 MinGW(32 位)和 Msys(bash 等)
  3. 安装 Windows 驱动程序套件(对于 W7,我使用 WDK 7 -- GRMWDK_EN_7600_1.ISO), which provides MASM 8 (needed for boost > 1.51 according to this post
    - 下载 ISO 映像并使用 WinRAR 提取文件对我有用
    - 安装程序建议不要安装 DSF,因此请跳过
    -将ML64.exe和ML.exe的目录添加到路径中(都需要)
    C:\Windows\WinDDK00.16385.1\bin\x86\amd64; C:\Windows\WinDDK00.16385.1\bin\x86
  4. 同时安装一个 64/32 位编译器(我使用 TDM gcc 5.1.0-2)并
    将其 bin/ 目录添加到 Windows 路径
  5. 以管理员身份打开 cmd.exe 并启动 bash
  6. boost 的父目录中,运行
    git clone --recursive https://github.com/boostorg/boost.git boost > clone.log
  7. 退出 bash,转到目录提升和 运行:
    bootstrap gcc
  8. project-config.jam中,将using msvc ;改为using gcc ;
  9. 运行:
    b2 headers(现在需要建立符号链接)
    b2 -a -d+2 -q --build-type=complete --build-dir=build toolset=gcc link=shared runtime-link=shared threading=multi

b2 的这些选项适用于以前版本的 boost,但现在我只能使用没有选项的 b2 进行编译。完整的命令行 returns 这些错误:
undefined reference to __imp_make_fcontext
undefined reference to __imp_jump_fcontext.

我找不到描述这些错误的其他帖子甚至网页。有谁知道 Windows 中仍然使用 b2 选项从 GitHub 存储库获得最新提升的方法吗?

编辑:

使用 b2 -a -d+2 -q --build-dir=build toolset=gcc 有效。显然 --build-type=complete 选项是上面第一个破坏编译的选项。

标志 link=sharedruntime-link=sharedthreading=multi 也会导致 b2 停止。

有没有人知道如何解决这个问题?是否有适用于当前存储库的 MinGW 补丁?

您最好的选择可能是切换到 MSYS2,它是 MSYS 的新改进版本。我对 MSYS2 有很好的经验,而我不能说 MSYS 或 Cygwin(在我的例子中,它正在大量使用 boost 和 c++11 构建项目)。

你可以阅读一些比较here

也摘自答案here:

While MSYS isn't dead, I would say it's not looking very healthy either.