Windows

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

使用带有 UCRT 的 Mingw 构建 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 徽标工具包