Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

これは?

タイトルの通りです。

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

mixi
全ての人に心地よいつながりを
http://mixi.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした