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 Runtime Library 的 2 位或 3 位版本。

  2. 如果您要更改可执行文件的名称,请在 Makefile 中更改 RUBY_INSTALL_NAMERUBY_SO_NAME。并添加 RUBYW_INSTALL_NAME 以更改可执行文件(无控制台窗口)的名称(如果您也需要)。

  3. 您需要指定 vcpkg 目录以使用 --with-opt-dir 选项,如下所示: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 的路径搜索方法的限制。

图标

构建目录中的任何图标文件 (*.ico)、使用 icondirs make 变量指定的目录和 ruby 源目录下的 win32 目录都将根据其基本名称包含在 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