Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
58
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@rockname

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

これは?

タイトルの通りです。

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

58
Help us understand the problem. What is going on with this article?
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
58
Help us understand the problem. What is going on with this article?