3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows11 に Swift をインストールする“やさしい”手順

Last updated at Posted at 2024-06-21

windows10 の場合は こちら。


↑公式サイトから Windows版 Swiftインストーラswift-5.10.1-RELEASE-windows10.exeをダウンロードしてインストールしたが、コンパイルできなかった。

> swift .\hello.swift
<module-includes>:1:10: note: in file included from <module-includes>:1:
#include "AssertionReporting.h"
         ^
C:\Users\USERNAME\AppData\Local\Programs\Swift\Platforms\5.10.1\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\shims/AssertionReporting.h:16:10: note: in file included from C:\Users\USERNAME\AppData\Local\Programs\Swift\Platforms\5.10.1\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\shims/AssertionReporting.h:16:
#include "SwiftStdint.h"
         ^
C:\Users\USERNAME\AppData\Local\Programs\Swift\Platforms\5.10.1\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\shims/SwiftStdint.h:28:10: error: 'stdint.h' file not found
#include <stdint.h>
         ^
<unknown>:0: error: could not build C module 'SwiftShims'

Swift 5.9.2、Swift 5.8.1 の旧バージョンをインストールしてみたが、同じ現象でした。

数年前に当時のSwiftをインストールしたときは、こんなことにはならず すんなりコンパイルできたのに。。。

どうやら、Visual Studio Communityをダウンロードして、MSVC等のデスクトップ開発環境のインストールが前提となったようだ。

公式のドキュメントに書いてありました。
You will need to install Visual Studio with the following components.

ですが、Windows11からWindows Package Managerを使ったインストール方法があり、こちらの方がずっと簡単にインストールできたので、ここに手順のみまとめておきます。

Windows Package Manager を使ったインストール方法

手順は3つ。

手順 1

Windows11の開発者モードをONにする。

設定 → システム → 開発者向け → 開発者モード → 「オン」にする

手順 2

次のコマンドで Visual Studio の必要なコンポーネントをインストールする。

> winget install --id Microsoft.VisualStudio.2022.Community --exact --force --custom "--add Microsoft.VisualStudio.Component.Windows11SDK.22000 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64"

Visual Studioのインストーラが起動し、必要なコンポーネントのダウンロードとインストールが自動的に走る。
自分のPCだと、30分ほどかかりました。

手順 3

次のコマンドで Swift(及びツールチェーン)をダウンロード&インストールする。

> winget install --id Swift.Toolchain -e

当然、最新バージョンがインストールされます。

Windows10 の場合のコマンド

Windows10 においても、wingetをインストールすれば、同様の手順で可能ですが、まったく同じコマンドではエラーとなったので、Windows10 の場合のコマンドを書いておきます。

手順2
> winget install --id Microsoft.VisualStudio.2022.Community --exact --force --custom "--add Microsoft.VisualStudio.Component.Windows10SDK.17763 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64" --source winget
手順3
> winget install --id Swift.Toolchain -e --source winget

確認

以上で、インストールできたので、実際に確認します。

> swift --version
Swift version 5.10.1 (swift-5.10.1-RELEASE)
Target: x86_64-unknown-windows-msvc
エラーになる??
> swift hello.swift
<unknown>:0: error: could not load the swift standard library
コンパイル& exe実行できた
> swiftc hello.swift
   ライブラリ hello.lib とオブジェクト hello.exp を作成中
> .\hello.exe
Hello! Swift!
ビルドは問題ない
> mkdir MyCLI
> cd MyCLI
> swift package init --type executable
Creating executable package: MyCLI
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources\main.swift

> swift run MyCLI
Building for debugging...
[8/8] Linking .\.build\x86_64-unknown-windows-msvc\debug\MyCLI.exe
Build complete! (5.35s)
Hello, world!

Replも確認しておきます。

エラーになりませんが、printが出力されません??
> swift repl
Welcome to Swift version 5.10.1 (swift-5.10.1-RELEASE).
Type :help for assistance.
1> print("hello")
2> :quit

公式手順通りにインストールできたのですが、何かおかしいです。
今後、原因究明して記事をアップデートします。

原因究明履歴

2024.6.22追記

swift -print-target-infoで出てきた以下の内容。

> swift -print-target-info
Swift version 5.10.1 (swift-5.10.1-RELEASE)
Target: x86_64-unknown-windows-msvc
C:\Users\USERNAME\AppData\Local\Programs\Swift\Toolchains\5.10.1+Asserts\usr\bin\swift-frontend.exe -frontend -print-target-info -target x86_64-unknown-windows-msvc
{
  "compilerVersion": "Swift version 5.10.1 (swift-5.10.1-RELEASE)",
  "target": {
    "triple": "x86_64-unknown-windows-msvc",
    "unversionedTriple": "x86_64-unknown-windows-msvc",
    "moduleTriple": "x86_64-unknown-windows-msvc",
    "compatibilityLibraries": [ ],
    "librariesRequireRPath": false
  },
  "paths": {
    "runtimeLibraryPaths": [
      "C:\\Users\\USERNAME\\AppData\\Local\\Programs\\Swift\\Toolchains\\5.10.1+Asserts\\usr\\lib\\swift\\windows"
    ],
    "runtimeLibraryImportPaths": [
      "C:\\Users\\USERNAME\\AppData\\Local\\Programs\\Swift\\Toolchains\\5.10.1+Asserts\\usr\\lib\\swift\\windows",
      "C:\\Users\\USERNAME\\AppData\\Local\\Programs\\Swift\\Toolchains\\5.10.1+Asserts\\usr\\lib\\swift\\windows\\x86_64"
    ],
    "runtimeResourcePath": "C:\\Users\\USERNAME\\AppData\\Local\\Programs\\Swift\\Toolchains\\5.10.1+Asserts\\usr\\lib\\swift"
  }
}

一つ上の階層のswiftまでは存在するが、↓このフォルダが存在しない。
C:\Users\USERNAME\AppData\Local\Programs\Swift\Toolchains\5.10.1+Asserts\usr\lib\swift\windows

これが関係しているかも?と考え、空のwindowsフォルダを作ってみたが、結果は変わらない。

error: could not load the swift standard library
せめて、そのライブラリ名が判明すれば何とかなるようにも思うが、未だ原因不明だ。

ちなみに、Macで同じコマンドを実行した結果は、以下の内容。

$ swift -print-target-info
Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx14.0
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -print-target-info -target arm64-apple-macosx14.0
{
  "compilerVersion": "Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)",
  "target": {
    "triple": "arm64-apple-macosx14.0",
    "unversionedTriple": "arm64-apple-macosx",
    "moduleTriple": "arm64-apple-macos",
    "compatibilityLibraries": [ ],
    "librariesRequireRPath": false
  },
  "paths": {
    "runtimeLibraryPaths": [
      "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx",
      "/usr/lib/swift"
    ],
    "runtimeLibraryImportPaths": [
      "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx"
    ],
    "runtimeResourcePath": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift"
  }
}

$ ls /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx
Cxx.swiftmodule					libswiftCompatibility51.a
CxxStdlib.swiftmodule				libswiftCompatibility56.a
layouts-x86_64.yaml				libswiftCompatibilityConcurrency.a
lib_InternalSwiftScan.dylib			libswiftCompatibilityDynamicReplacements.a
libcxxshim.h					libswiftCompatibilityPacks.a
libcxxshim.modulemap				libswiftCxx.a
libcxxstdlibshim.h				libswiftCxxStdlib.a
libswiftCompatibility50.a			prebuilt-modules

Macがグローバルインストールに対し、Windows11ではユーザインストールになっている点が違う。インストール時にインストール先は聞かれなかった。影響は分からない。

2024.6.26追記

wingetでグローバルインストールを指定するオプションを見つけたので、そのオプションでインストールしてみた。

> winget install --scope machine --id Swift.Toolchain -e

その結果、swift -print-target-infoで出てくる内容も変化した。確かにパスがグローバルになった。

> swift -print-target-info
{
  "compilerVersion": "Swift version 5.9.2 (swift-5.9.2-RELEASE)",
  "target": {
    "triple": "x86_64-unknown-windows-msvc",
    "unversionedTriple": "x86_64-unknown-windows-msvc",
    "moduleTriple": "x86_64-unknown-windows-msvc",
    "compatibilityLibraries": [ ],
    "librariesRequireRPath": false
  },
  "paths": {
    "runtimeLibraryPaths": [
      "C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\lib\\swift\\windows"
    ],
    "runtimeLibraryImportPaths": [
      "C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\lib\\swift\\windows",
      "C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\lib\\swift\\windows\\x86_64"
    ],
    "runtimeResourcePath": "C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\lib\\swift"
  }
}

> ls "C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\lib\\swift\\windows"
Get-ChildItem: Cannot find path 'C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\lib\swift\windows' because it does not exist.

しかし、C:\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr\lib\swift\windowsのパスが存在しないことは、変わらず同じ。

なぜか、バージョンがダウンした。

> swift --version
Swift version 5.9.2 (swift-5.9.2-RELEASE)
Target: x86_64-unknown-windows-msvc

しかし、swift hello.swiftの結果はエラーのまま。。。

> swift hello.swift
<unknown>:0: error: could not load the swift standard library

2025.10.30追記

最新版をインストールしたところ、問題なく動作しました。

  • 環境

     エディション		Windows 11 Pro
     バージョン			25H2
     インストール日		2025/10/10(金)
     OS ビルド			26200.6584
     エクスペリエンス	Windows 機能エクスペリエンス パック 1000.26100.234.0
    

  • インストール

     > winget --version
     v1.12.350
    
     > winget install --id Microsoft.VisualStudio.2022.Community --exact --force --custom "--add Microsoft.VisualStudio.Component.Windows11SDK.22000 --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Tools.ARM64"
     見つかりました Visual Studio Community 2022 [Microsoft.VisualStudio.2022.Community] バージョン 17.14.18
     このアプリケーションは所有者からライセンス供与されます。
     Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
     インストーラーハッシュが正常に検証されました
     パッケージのインストールを開始しています...
     インストールが完了しました
    
     > winget install --id Swift.Toolchain -e
     見つかりました Swift [Swift.Toolchain] バージョン 6.2.0
     このアプリケーションは所有者からライセンス供与されます。
     Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
     このパッケージには次の依存関係が必要です:
     - パッケージ
     	Git.Git
     	Microsoft.VCRedist.2015+.x64 [>= 14.28.29913.0]
     	Python.Python.3.9
     (1/1) 見つかりました Python 3.9 [Python.Python.3.9] バージョン 3.9.13
     このアプリケーションは所有者からライセンス供与されます。
     Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
     ダウンロード中 https://www.python.org/ftp/python/3.9.13/python-3.9.13-amd64.exe
     ██████████████████████████████  27.8 MB / 27.8 MB
     インストーラーハッシュが正常に検証されました
     パッケージのインストールを開始しています...
     インストールが完了しました
    
     ダウンロード中 https://download.swift.org/swift-6.2-release/windows10/swift-6.2-RELEASE/swift-6.2-RELEASE-windows10.exe
     ██████████████████████████████   851 MB /  851 MB
     インストーラーハッシュが正常に検証されました
     パッケージのインストールを開始しています...
     インストールが完了しました
    

  • コンパイル&実行

     > cat .\hello.swift
     print("Hello, World!")
    
     > swift --version
     Swift version 6.2 (swift-6.2-RELEASE)
     Target: x86_64-unknown-windows-msvc
     Build config: +assertions
    
     > swift .\hello.swift
     Hello, World!
    

以上

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?