LoginSignup
140
85

More than 5 years have passed since last update.

【Xcode】xcodeprojとxcworkspaceの違いについて本気出して考えてみた

Posted at

これは?

タイトルの通りです。

xcworkspace = 複数のxcodeprojを取りまとめられるもの

と自分は考えていたのですが、 xcodeproj自身がxcodeprojを持つことも実はできるし、いまいち違いがわからなくなってきたので備忘録として。

Target

XcodeのProjectには少なくともひとつ Target がありますね。
Targetとは、ビルドの結果得られる生成物のことで、iOS, watchOS, OSXなどがあります。

そして、どのTargetも build settings があり、ビルドするときは必ずいずれかのTargetを選択する必要があります。

SampleProject_xcodeproj01.png

Project (.xcodeproj)

iOSやwatchOSなど複数Targetsをグループ化するのが Project です。
Targetのベースとなる設定はProjectの build settings で行い、Target固有の設定はそれぞれのTarget内の build settings でやる感じです。

XcodeはProjectを開き、Targetをビルドする、ということですね。

SampleProject_xcodeproj02.png

Subproject

Projectの中に他のProjectを Subproject として組み込むことができます。
Subprojectはそれ単体で開くことも、親プロジェクト内で開くこともできます。

親ProjectをビルドすればSubprojectもビルドが走ります(ビルドキャッシュ機構が動作するので、次に差分が生じるまでリビルドも生じません)。

同じXcodeのウィンドウからどちらのProjectも編集でき、Targetも選択可能です。

SampleSubproject_xcodeproj03.png

Workspace (.xcworkspace)

複数のProjectを同じレベルで束ねることができるのが Workspace です。
PackegeMangerにCocoapodsを使用している場合はよく見ると思います。

AnotherSampleProject_xcodeproj.png

xcodeproj vs xcworkspace

以上のことから、使い分けとしては以下のようになります。

  • 1つのメインプロジェクトがあり、そこからの参照しかない場合は Subproject として組み込む
  • 複数のプロジェクトからの依存がある場合、 Workspace として束ねる

参考

https://developer.apple.com/jp/documentation/ToolsLanguages/Conceptual/Xcode_Overview/CreatingApps/WorkingwithTargets.html
https://stackoverflow.com/questions/21631313/xcode-project-vs-xcode-workspace-differences

140
85
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
140
85