Cocoaメモ

Appleプラットフォームでの開発メモ

Xcode WorkspaceでアプリプロジェクトとSwift Packageを束ねる

Xcode Workspace(xcworkspace)には複数のXcode Projectを束ねて、暗黙の依存関係を持たせる機能があります。

例えば、アプリ本体のxcodeprojとライブラリのxcodeprojをWorkspaceで束ねると、アプリ本体側からライブラリxcodeprojにあるライブラリターゲットのリンク指定が可能になります。アプリターゲットをビルドするとライブラリターゲットが暗黙的に依存解決され、ビルドとリンクが行われます。

ローカルのSwift Packageもxcodeprojと同様にWorkspaceで束ねてビルドできます。

検証環境

手順

まず、空のWorkspaceを作成します。

次に、作成したxcworkspaceと同じフォルダに、アプリプロジェクトフォルダとSwift Packageフォルダを配置します。

f:id:nakiwo:20210508224042p:plain:w300

WorkspaceにxcodeprojとSwift Packageフォルダの参照を追加します。空のWorkspaceに、それぞれドラッグ&ドロップするのが簡単でしょう。

Workspaceは次の状態になります。

f:id:nakiwo:20210508225043p:plain:w300

Sample.xcworkspace/contents.xcworkspacedataからは次のように参照されています。

<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:SampleApp/SampleApp.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:ViewLibrary">
   </FileRef>
</Workspace>

最後に、アプリターゲットから、Swift Package内のライブラリターゲットへの参照を追加します。

下図の+ボタンを押し、Swift Package内のライブラリを選択します。

f:id:nakiwo:20210508225716p:plain:w300

f:id:nakiwo:20210508230022p:plain:w300

これで、アプリターゲットからSwift Packageが参照できるようになりました。