Windows

Ruby 支持几个 Windows 的原生构建平台。

使用 Mingw 和 UCRT 构建 Ruby

最简单的构建环境只是一个标准的 RubyInstaller-Devkit 安装和 git-for-windows。你可能想使用 VSCode 作为编辑器。

构建示例

Ruby 核心开发可以在 Windows cmd 中进行,例如

ridk enable ucrt64

pacman -S --needed %MINGW_PACKAGE_PREFIX%-openssl %MINGW_PACKAGE_PREFIX%-libyaml %MINGW_PACKAGE_PREFIX%-libffi

cd c:\
mkdir work
cd work
git clone https://github.com/ruby/ruby

cd c:\work\ruby
sh autogen.sh
sh configure  -C --disable-install-doc
make

或者在 MSYS2 bash 中进行,例如

ridk enable ucrt64
bash

pacman -S --needed $MINGW_PACKAGE_PREFIX-openssl $MINGW_PACKAGE_PREFIX-libyaml $MINGW_PACKAGE_PREFIX-libffi

cd /c/
mkdir work
cd work
git clone https://github.com/ruby/ruby
cd ruby

./autogen.sh
./configure -C --disable-install-doc
make

使用 Visual C++ 构建 Ruby

需求

  1. Windows 7 或更高版本。

  2. Visual C++ 12.0 (2013) 或更高版本。

    注意 如果您想构建 x64 版本,请使用 x64 的原生编译器。

  3. 请设置环境变量 INCLUDELIBPATH,以便从命令行正确运行所需的命令。

    注意 构建 ruby 需要以下命令。

    • nmake

    • cl

    • ml

    • lib

    • dumpbin

  4. 如果您想从 GIT 源代码构建,则需要以下命令。

    • patch

    • sed

    • ruby 2.0 或更高版本

    您可以使用 scoop 安装它们,例如

    scoop install git ruby sed patch
    
  5. 您需要使用 vcpkg 安装所需的库,例如

    vcpkg --triplet x64-windows install openssl libffi libyaml zlib
  6. 启用命令行的命令扩展。这是 cmd.exe 的默认行为。如果您想显式启用它,请使用 /E:ON 选项运行 cmd.exe

如何编译和安装

  1. 在您的构建目录中执行 win32\configure.bat。您可以指定目标平台作为参数。例如,运行 configure --target=i686-mswin32 您也可以指定安装目录。例如,运行 configure --prefix=<install_directory> 安装目录的默认值为 /usr。默认的 PLATFORM 在 32 位平台上为 i386-mswin32_MSRTVERSION,在 x64 平台上为 x64-mswin64_MSRTVERSIONMSRTVERSION 是 Microsoft 运行时库的 2 位或 3 位版本号。

  2. 如果您想更改可执行文件的名称,请在 Makefile 中更改 RUBY_INSTALL_NAMERUBY_SO_NAME。如果您还想更改没有控制台窗口的可执行文件的名称,请添加 RUBYW_INSTALL_NAME

  3. 您需要使用 --with-opt-dir 选项指定 vcpkg 目录,例如 configure --with-opt-dir=C:\vcpkg\installed\x64-windows

  4. 如果您是从 GIT 源代码构建,请运行 nmake up

  5. 运行 nmake

  6. 运行 nmake check

  7. 运行 nmake install

构建示例

错误

不能使用包含任何空格字符的路径名作为 Ruby 源代码目录,此限制来自 NMAKE!INCLUDE 指令的行为。

您可以在任何目录中构建 Ruby,包括源代码目录,但源代码目录中的 win32 目录除外。这是源于 NMAKE 的路径搜索方法的限制。

图标

构建目录中、icondirs 变量指定的目录和 Ruby 源代码目录下的 win32 目录中的任何图标文件 (*.ico) 将根据其基本名称包含在 DLL 或可执行文件中。 $(RUBY_INSTALL_NAME).ico 或 ruby.ico –> $(RUBY_INSTALL_NAME).exe $(RUBYW_INSTALL_NAME).ico 或 rubyw.ico –> $(RUBYW_INSTALL_NAME).exe 其他 –> $(RUBY_SO_NAME).dll

虽然 Ruby 源代码中没有分发任何图标,但您可以使用任何您喜欢的图标。您可以通过搜索引擎找到许多图像。例如,以下内容来自 Ruby logo kit