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 10/Windows Server 2016 或更高版本。

  2. Visual C++ 14.0 (2015) 或更高版本。

    注意如果要构建 x64 版本,请使用 x64 的本机编译器。

  3. 请设置环境变量 INCLUDELIBPATH 以便从命令行正确运行所需的命令。这些通常由 vcvarall*.bat 正确设置。

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

    • nmake

    • cl

    • ml

    • lib

    • dumpbin

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

    • git

    • sed

    • ruby 3.0 或更高版本

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

    scoop install git sed ruby
    
  5. 您需要像在 ruby 存储库的目录上使用 vcpkg 安装所需的库,例如

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

如何编译和安装

  1. 在构建目录中执行 win32\configure.bat。您可以指定目标平台作为参数。例如,运行 configure --target=i686-mswin32。您还可以指定安装目录。例如,运行 configure --prefix=<install_directory>。安装目录的默认值是 /usr

  2. 如果要附加到可执行文件和 DLL 文件名,请指定 --program-prefix--program-suffix,例如 win32\configure.bat --program-suffix=-$(MAJOR)$(MINOR)

    此外,--install-name--so-name 选项分别指定可执行文件和 DLL 文件的确切基本名称,例如 win32\configure.bat --install-name=$(RUBY_BASE_NAME)-$(MAJOR)$(MINOR)

    默认情况下,不带控制台窗口的可执行文件的名称是通过将上面指定的 RUBY_INSTALL_NAME 中的 ruby 替换为 rubyw 生成的。如果想要进行更多不同的更改,请直接在 Makefile 中修改 RUBYW_INSTALL_NAME

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

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

  5. 运行 nmake

  6. 如果需要将 vcpkg 安装的库(例如 libssl-3-x64.dll)复制到构建目录,请以管理员权限运行 nmake prepare-vcpkg

  7. 运行 nmake check

  8. 运行 nmake install

构建示例

Bug

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

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

依赖管理

Ruby 使用 vcpkg 来管理 mswin 平台上的依赖项。

您可以在构建目录下更新和安装它,例如

nmake update-vcpkg # Update baseline version of vcpkg
nmake install-vcpkg # Install vcpkg from build directory

图标

根据其基本名称,构建目录中、使用 icondirs make 变量指定的目录以及 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 徽标工具包制作