こんにちは。からすぱんです。
先日、objective-cの既存プロジェクトにCommand Line Tool のターゲットを追加するため、結構な時間(2日ほど)格闘したのでその備忘録です。
尚、前回までシリーズ風にお送りしていた「流行りのAWSを使ってみたい」についてですが、諸事情によりしばらく(という名の永久)中止したいと思います。
いないと思いますが、楽しみにされていた方すみませんm(__)m
さて、本題ですが、objective-cのプロジェクトにターゲットを追加する、、そもそもobjective-cにおけるターゲット、プロジェクト、ワークスペースとは何なんでしょうか。
下に簡単にまとめました。
ターゲット、プロジェクト、ワークスペース の違い
ターゲット | ー | ビルドの結果得られる生成物(Command Line Tool , iOS, watchOS, OSXなど) |
プロジェクト | .xcodeproj | iOSやwatchOSなど複数Targetsをグループ化するもの |
ワークスペース | .xcworkspace | 複数のプロジェクトを同じレベルで束ねることができる |
サブプロジェクト | .xcodeproj | プロジェクトの中に他のプロジェクトをサブプロジェクトとして組み込むことができる サブプロジェクト はそれ単体で開くことも、親プロジェクト内で開くことも可能 |
C#でいうソリューションがワークスペース、ターゲットはexeやdllなイメージでしょうか。
サブプロジェクトの利点がいまいちわかりませんが、使う機会があった際にもう一度調べてみることにします、、。
ではここから、 OSX のアプリケーションをもつプロジェクトに Command Line Tool のターゲットを追加していきます。
1.プロジェクトにターゲットを追加する
- XCodeのナビゲーターバーでプロジェクトを選択し、エディタ領域のPROJECT(この場合は「HogeHoge」)を選択し、下部の「+」をクリックします。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/7E73622F-693A-4A32-AB47-05372A0815B4_1_105_c-1024x689.jpeg)
- ターゲット選択画面で、追加するターゲットの種類を選択します。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/9C37D586-8FF8-45F0-B5B8-1B9D7EB8500A_1_105_c-1024x689.jpeg)
- Command Line Tool のターゲットとソースコード格納フォルダを追加 することができました!
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/5A72DBF8-492D-4840-9501-ECCED5A5FE43_1_105_c-1024x689.jpeg)
ターゲットは追加されたものの、このままでは追加ターゲットのビルドとデバッグ実行ができません。実はかなり時間を喰ったのはここからでした。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/mi-1024x689.jpg)
2.追加ターゲットをビルド&デバッグ実行する
- 現在のスキーマをクリックし、ビルドするスキーマを変更します。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/5B01F07D-1EEF-4F8F-994C-9ADD14C2ADDE_1_105_c-1024x689.jpeg)
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/84F57BDE-7A5B-466D-87E4-AC103809FA3D_1_105_c-1024x689.jpeg)
- ビルドを実行すると、オブジェクトが生成され、赤くなっていたオブジェクト名が白く表示されます。
![](https://blog.regrex.jp/wp-content/uploads/sites/2/2022/01/EF732BA0-ECBD-47C2-8A85-FEA48B7999A5_1_105_c-1024x689.jpeg)
ビルドが成功し、オブジェクトが生成される
まとめるとめちゃくちゃ簡単やん!という感じがしますが、VisualStudio でビルドさせるのとだいぶ違いすぎて、テンパり放題でした。
また一つ賢くなれた気がします。
それでは。