Swift toolchainを使ってWindows10のSwiftビルド環境


まえがき

Siwftを勉強したい、Swiftで競技プログラミングに参加したいあるいはアプリを作りたい。
しかし自分のマシンはWindows……
ということで、Windows10で必要な環境を整えることにしました。Mac買え
こちらはその備忘録になります。

2020年9月以降、WindowsでSwiftをビルド可能にするSwift toolchainが提供されています。
今回はそちらを利用していきます。

Swift公式のインストールガイド
https://swift.org/getting-started/

環境

Windows10 Home
(バージョン2004)

必要なもの

Swift toolchainの設定

流れに身を任せる。
Toolchainインストーラは一本道なので迷うことはないと思います。

VS 2019の設定

インストール
必須項目と推奨項目があるので、すべてに☑が入るようにします。
下記のワークロードを設定することで「Windows Universal C Runtime」と「Git for Windows」以外は設定されます。

  • Python 開発
  • C++ によるデスクトップ開発

「Windows Universal C Runtime」と「Git for Windows」は個別のコンポーネントから検索して設定します。
ただし、日本語環境では「Windows Universal C Runtime」は「Windows ユニバーサル CRT」という名前になっています。
(Universalで調べても出てきません……)

必須項目

No Component Visual Studio ID
1 MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.25) Microsoft.VisualStudio.Component.VC.Tools.x86.x64
2 Windows Universal C Runtime Microsoft.VisualStudio.Component.Windows10SDK
3 Windows 10 SDK (10.0.17763.0) Microsoft.VisualStudio.Component.Windows10SDK.17763

※1,3に関してはこれより新しいバージョンであればOK

推奨項目

No Component Visual Studio ID
1 C++ CMake tools for Windows Microsoft.VisualStudio.Component.VC.CMake.Project
2 Git for Windows Microsoft.VisualStudio.Component.Git
3 Python 3 64-bit (3.7.8) Component.CPython.x64

※Git, Python3が既にインストール済みの場合は飛ばしてOK

サポートファイルの設定
設定ファイルを上書きします。
VS 2019のインストール時に同時にインストールされている「X86 Native Tools Command Prompt for VS 2019」を管理者権限で起動して、以下のコマンドを順に実行します。
※ 非常に残念ながら、VS 2019のインストールファイルを上書きしている関係上、Visual Studioのアップデート毎にこの作業をする必要があります。やはりMacを買った方が早いのでは?

copy %SDKROOT%\usr\share\ucrt.modulemap "%UniversalCRTSdkDir%\Include\%UCRTVersion%\ucrt\module.modulemap"
copy %SDKROOT%\usr\share\visualc.modulemap "%VCToolsInstallDir%\include\module.modulemap"
copy %SDKROOT%\usr\share\visualc.apinotes "%VCToolsInstallDir%\include\visualc.apinotes"
copy %SDKROOT%\usr\share\winsdk.modulemap "%UniversalCRTSdkDir%\Include\%UCRTVersion%\um\module.modulemap"

Python3を環境変数のパスに設定(VS 2019からのインストールまたは設定していない場合)
Python3のインストールをVS 2019のワークロードから行った場合、環境変数を別途設定する必要があります。

> path %ProgramFiles(x86)%\Microsoft Visual Studio\Shared\Python37_64;%PATH%

バージョンが確認できればOKです。

>python -V
Python 3.7.8

Windows10 May Update 2019以降Microsoft StoreにあるPythonインストーラに飛ばす環境変数が追加されています。
飛ばされた方は環境変数の優先順位を確認してみましょう。

世界にご挨拶

では、エンジニアご用達の例のやつをやってみましょう。

Swiftのバージョン確認
ここまでの設定ができていれば、コマンドラインからSwiftのバージョンが確認できます。

> swift --version
compnerd.org Swift version 5.4 (swift-5.4-RELEASE)
Target: x86_64-unknown-windows-msvc

ハローワールド
適当なフォルダに以下のファイルを作成します。

hello.swift
print("Hello, World!")

コマンドプロンプトでファイルのあるフォルダに移動して、コマンドを実行していきます。

>set SWIFTFLAGS=-sdk %SDKROOT% -I %SDKROOT%/usr/lib/swift -L %SDKROOT%/usr/lib/swift/windows
>swiftc hello.swift -o hello.exe %SWIFTFLAGS%

「ライブラリ hello.lib とオブジェクト hello.exp を作成中」と表示された後、同じフォルダにhello.exeが作成されているはずです。

実行すると……

>hello
Hello, World!

挨拶できました!

あとがき

というわけで
環境構築からハローワールドまでの備忘録でした。

提供が始まって半年とちょっと、まだまだ情報が少ないのでどなたかの参考になれば幸いです。