🦋

WindowsアプリをSwiftで作成するための準備。

2022/10/31に公開

経緯はこちらです。

方法に関して

Windows向けのSwiftツールチェーンがダウンロード可能になったことによりツールチェーンを使って様々な方法でアプリを作成することができると思います。

自分の場合はGUIが必要でしたので方法として情報の多いCMakeとninjaを使った方法で作成していくことにしました。
※CMakeとninjaでのビルドに関しては次回投稿予定です。

今回はSwiftファイルのコンパイルと実行ファイルの作成までを行います。ただし準備としてはCMakeとninjaを使った方法でのアプリのビルドを目指していますのでそちらも含めた準備となります。

最低限の「Swiftファイルのコンパイルと実行ファイルの作成」のみを行いたい方はこちらの動画を参考にしていただきたいです。

環境

OS: Windows 10 Version 22H2
Tool Chain: Swift 5.7
IDE: Visual Studio 2022 Community

準備

Developer Modeの設定

CMakeとninjaでのビルドで必要です。
※この設定がないとVisual Studio 2022 Communityのインストール時に必要なセットアップが行われずninja実行時にre-run loopになります。

Git for Windowsのインストール

CMakeとninjaでのビルドで必要です。
※この設定がないとサブモジュールを使用しているリポジトリでCMake実行時にエラーになります。

下記のサイトから「Download」をクリックします。
https://gitforwindows.org/
ダウンロードされたインストーラに従ってインストールします。

Visual Studio 2022 Communityのインストール

下記のサイトからVisual Studio 2022 Communityのセットアップインストーラをダウンロードします。
https://visualstudio.microsoft.com/ja/vs/whatsnew/

インストーラを起動しインストールを進めます。
下記のような画面が表示されるまで進めます。

「Desktop development with C++」にチェックを入れます。

「Individual components」をクリックし、検索窓に「windows universal C runtime」と打ち込みます。検索結果の中の「Windows Universal C Runtime」にチェックを入れます。

「Install」をクリックしインストールを開始させます。
完了すると自動的にVisual studioが開きますが閉じてしまって大丈夫です。

Swift Tool Chainのインストール

下記サイトから「Releases」の「Windows 10」の「x86_64」をクリックします。
https://www.swift.org/download/
ダウンロードされたインストーラをダブルクリックで実行しインストールします。

SDKモジュールのコピー

スタートから「x64 Native Tools Command Prompt for VS 2022」を探し出し右クリックで「More」> 「Run as administrator」を選択し管理者権限で実行します。

ウィンドウが開いたら下記のコマンドを順に実行します。

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"

途中で「Overwrite C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\module.modulemap? (Yes/No/All):」と上書きをしていいか?聞かれることがあります その時は「Yes」を選択します。

コマンドの実行を完了したら「exit」でコマンドプロンプトを終了させます。

Swiftファイルのコンパイルと実行ファイルの作成

環境変数の定義

スタートから「x64 Native Tools Command Prompt for VS 2022」を探し出しクリックで実行します。

ウィンドウが開いたら
cdコマンドで適当なワークスペースに移動します。
移動できたら下記のコマンドで環境変数SWIFTFLAGSをセットします。

set SWIFTFLAGS=-sdk %SDKROOT% -resource-dir %SDKROOT%\usr\lib\swift\windows\x86_64 -I %SDKROOT%\usr\lib\swift -L %SDKROOT%\usr\lib\swift\windows

Swiftファイルの作成

メモ帳を開きHelloWorld.swiftを作成します。

notepad HelloWorld.swift

HelloWorld.swiftに下記を記述します。

HelloWorld.swift
func test(_ message: String) -> String {
    return "Hello, \(message)"
}
let testMessage = test("World")
print(testMessage)

Swiftファイルのコンパイルと実行ファイルの作成

先ほど作成したHelloWorld.swiftをコンパイルしHello.exe実行ファイルを作成します。

swiftc %SWIFTFLAGS% -emit-executable -o Hello.exe HelloWorld.swift

作成された実行ファイルの実行

実行ファイルが機能しているかを下記のコマンドを実行し確認します。

Hello

次回はCMakeとninjaを使った方法でGUI付きのアプリ作成を行います。

Discussion