XCODE5、cocos2d-xでファイルテンプレート設定


## 背景

v2.2.x からプロジェクト作成のやりかたが代わって
テンプレートをインストールする方法ではなくなってしまいました。

## 問題

ファイルを作成する際に、XCODEの通常の`C++ Class`テンプレートをつかって行うと、
その都度、cocos2d-x用に書き換えるのがめんどくさいのです

## 対応

ということで、自分でXCODEのファイル作成テンプレートをつくります。

## 作り方

詳細な手順は[shu223](http://qiita.com/shu223)さんの[Xcodeのファイルテンプレートを自作する](http://qiita.com/shu223/items/5d8a245e5743f77df9eb)がとても参考になります。

さっくりといきます。

### 1.ベースとなるテンプレート

XCODEにもともとあるC++のテンプレート利用します
`/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/C and C++`
ここにあるので、これをコピーします。
今回僕は、classだけでよかったので、そのフォルダの中の`C++ Class.xctemplate`だけにしました

### 2.テンプレート設置

`~/Library/Developer/Xcode/Templates/File Templates`
最初にコピーしたものをこっちにペーストします。
`C and C++`ごとまるっとコピーしてきた場合は、cocos2dx用だとわかる用にリネームした方がいいかもです
僕のように`C++ Class.xctemplate`をコピーした場合は、既存の適当なフォルダ内にペーストするか、
自分でフォルダを作成してその中にペーストする感じで行きます
僕は`cocos2d-x v2.2.x`というフォルダを作ってその中にペーストしました。

### 3.テンプレート編集

ここは僕も詳細はちゃんと把握してないので割愛。
兎角、この中を編集すると自分好みのテンプレートができるようになりますので。
最初に紹介したshu223さんのとこみると、感じがつかめます

## ソース

僕のファイルテンプレートを[ここ](https://github.com/anzfactory/XcodeTemplates)においておきますので、使いたい方はどうぞ。
落として、`~/Library/Developer/Xcode/Templates/File Templates`にペーストするとだけですかね
同名フォルダがある場合は、バックアップをとるなり、リネームするなり…復元できるようにするのをオススメします

### 追記(2014.02.18)

cocos2d-x v.3.0(β2)用のファイルテンプレーも追加  
クラス名にプレフィックスがつかなくなったってことでそこら辺を中心に修正  
置き場所は同じなので、使ってやっても良いよという方はどうぞ

## 補足

![xcode_template.png](https://qiita-image-store.s3.amazonaws.com/0/33521/c47c4d9b-03f4-6d9d-229c-7e20185cbaac.png "xcode_template.png")
最終的にはこんな感じ

Xcode上はこんな感じになるはず…です
![xcode_template2.png](https://qiita-image-store.s3.amazonaws.com/0/33521/e6126f3f-9737-0a19-b20b-653f56e2fddd.png "xcode_template2.png")

この番号振ってる箇所が連動してるので、Xcode上の表示を自分好みにしたいときは、フォルダ名を良い感じに変更すると良いでしょう

継承クラスによるテンプレートの切り分けもちょこっと触れておきます
フォルダ内に`TemplateInfo.plist`というものがあるので、そちらに設定していきます。
今回は僕のやつを例に…

```xml:TemplateInfo.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Options</key>
	<array>
		<dict>
			<key>Default</key>
			<string>CCNode</string>
			<key>Description</key>
			<string>継承するクラスを入力してね！</string>
			<key>Identifier</key>
			<string>cocos2DXSubclass</string>
			<key>Name</key>
			<string>継承クラス：</string>
			<key>Required</key>
			<string>YES</string>
			<key>Type</key>
			<string>combo</string>
			<key>Values</key>
			<array>
				<string>CCNode</string>
				<string>CCLayer</string>
			</array>
		</dict>
	</array>
	<key>AllowedTypes</key>
	<array>
		<string>public.c-plus-plus-source</string>
	</array>
	<key>DefaultCompletionName</key>
	<string>MyCocos2DXClass</string>
	<key>Description</key>
	<string>cocos2dx用に.h/.cppを作成します</string>
	<key>Kind</key>
	<string>Xcode.IDEKit.TextSubstitutionFileTemplateKind</string>
	<key>MainTemplateFile</key>
	<string>___FILEBASENAME___.cpp</string>
	<key>SortOrder</key>
	<string>2</string>
	<key>Summary</key>
	<string>cocos2dx用に.h/.cppを作成します</string>
</dict>
</plist>
```

こんなかんじになっていますが、このなかの

```xml:Options
<array>
	<string>CCNode</string>
	<string>CCLayer</string>
</array>
```

ここに新に継承クラスを追記。例えば`CCSprite`とか
そしてテンプレートがおいてあるフォルダ内に`CCSprite`フォルダを作成して、その中に他と同じようにテンプレートファイルを設置して編集。
そうすると、XCODEでファイル作成→継承を`CCSprite`とやるとそのテンプレートが適用されるようになります
そうすると最終的には下記の様な構成になります。
以上です！

```
File Templates
	└ cocos2d-x v2.2.x   ←XCode上のファイル追加の左ペインの名前になります
		└ Cocos2d-x Class.xctemplate   ←XCodeで選択するテンプレートの名前になります
			├ TemplateInfo.plist   ←テンプレートの諸々設定
			├ TemplateIcon.icns   ←XCodeで表示されるアイコン
			├ CCNode   ←CCNodeを継承した場合に適用される
			│	├ ___FILEBASENAME___.cpp
			│	└ ___FILEBASENAME___.h
			├ CCLayer   ←CCLayerを継承した場合に適用される
			│	├ ___FILEBASENAME___.cpp
			│	└ ___FILEBASENAME___.h
			└ CCSprite   ←CCSpriteを継承した場合に適用される
				├ ___FILEBASENAME___.cpp
				└ ___FILEBASENAME___.h
```