🙌

Xcode 15.2でswiftコンパイラの開発環境を作る

2024/02/11に公開

Xcodeプロジェクトを生成するまではGetting Startedに従うとします。ここでは、最後のUsing Ninja with Xcodeの部分を添付画像付きで説明したいと思います。添付画像はXcode 15.2のときのものを使用します。

まず、空のワークスペースを作ります。File > New > Workspace...を選択します。

好きな場所に、ワークスペース名を付けて作ります。ここでは、SwiftDevとします。

次に、ワークスペースにSwift.xcodeprojを追加します。ナビゲーションの何もないところで、右クリックしてAdd Files to "SwiftDev"...を選択します。

Swift.xcodeprojのパスはbuild/Xcode-*/swift-macosx-*/Swift.xcodeprojのようになっているはずです。

ワークスペースを開くと、次のような表示になりますが、Manually Manage Schemesを選択します。

つづいてninjaのターゲットを追加します。File > New > Target...を選択します。

OtherExternal Build Systemを選択します。

Product Nameなどは適当に決めます(ここではSwiftDevとしました)。Build Toolだけはwhich ninjaで出てくるパスを設定します。

XcodeのプロジェクトSwiftをタップし、ターゲットSwiftDevを選択し、Infoを設定します。Directorybuild/Ninja-*/swift-macosx-*を設定します。Argumentsは目的に応じて変えるのですが、ここではbin/swift-frontendにします。

最後にSwiftDevターゲットを追加します。実行時の設定も必要なのでManage Schemes...を選択します。

次のキャプチャのようになるので、+ボタンをクリックします。

TargetSwiftDevにして、OKをクリックして追加します。

ここまでで、ビルドまではできるのですが、同時に実行までできるようにしたいと思います。こうすることで、実行中にデバッガで止めたりでき、実践的?な開発環境が出来上がります。
ターゲットをSwiftDevにした状態で、SwiftDevをクリックをして出てくるEdit Schemeを選択します。

Run > Info > Executableで、ninjaの生成するswift-frontendを選択します。これはOther...にしないとできません。

build/Ninja-*/swift-macosx-*/bin/swift-frontendを選択します。

Argumentsswift-frontendの好きなオプションを設定します。ここでは-typechecktest.swiftにしています。

OptionsUse custom working directoryを有効にしてファイルパスを設定すると、test.swiftの部分を単純にできます。

以上で準備ができました。あとは通常のiOSアプリと同様にデバッガでブレイクポイントを設定すると、そこで停止させたりできるようになります。標準出力はXcodeの画面右下のConsoleに表示されます。

Discussion