プロジェクトテンプレートを作成しようとしていますが、これに関するドキュメントが不十分であるか、存在しません。
いくつかのテンプレートファイルでリバースエンジニアリングを行うと、次のことがわかりました。ただし、実際には機能しません。
まず、プロジェクトテンプレートを次の内部にインストールする必要があることがわかりました。
〜/ライブラリ/アプリケーションサポート/開発者/共有/Xcode/プロジェクトテンプレート
プロジェクトを作成してここにインストールしました。この部分は機能します。これは、Xcodeの[新しいプロジェクト]チューザーの[ユーザーテンプレート]セクションに表示されます。
プロジェクトフォルダには、次のファイルが含まれています。ご覧のとおり、ファイル名を置き換えたい(その部分は機能します)が、後でわかるように、ファイルの内容も置き換えたいと思います。これは起こりません。
- ___PROJECTNAME___。xcodeproj
- ___PROJECTNAMEASIDENTIFIER____Prefix.pch
- ___PROJECTNAMEASIDENTIFIER___。icns
- ___PROJECTNAMEASIDENTIFIER___Delegate.h
- ___PROJECTNAMEASIDENTIFIER___Delegate.m
- ___PROJECTNAMEASIDENTIFIER___Template.html
- Debug.xcconfig
- en.lproj
- Info.plist
- Release.xcconfig
___PROJECTNAME___。xcodeprojパッケージに2つの特別なファイルを入れました。
- TemplateInfo.plist
- TemplateIcon.icns-[新しいプロジェクト]ウィンドウに表示されるアイコン
このテンプレートを使用して新しいプロジェクト(ストレステストとして「Foo&Bar」と呼ばれる)を作成すると、次のファイルが作成されます。
- Debug.xcconfig
- en.lproj
- Foo&Bar.xcodeproj
- Foo ___ Bar_Prefix.pch
- Foo ___ Bar.icns
- Foo ___ BarDelegate.h
- Foo ___ BarDelegate.m
- Foo ___ BarTemplate.html
- Info.plist
- Release.xcconfig
ここまでは順調ですね!
しかし、ファイルの内容を見ると、このようなものが得られます。Foo___BarDelegate.mの内容は次のとおりです。
//
// «PROJECTNAMEASIDENTIFIER»Delegate.m
// «PROJECTNAME»
//
// Created by «FULLUSERNAME» on «DATE».
// Copyright «ORGANIZATIONNAME» «YEAR» . All rights reserved.
//
#import "«PROJECTNAMEASIDENTIFIER»Delegate.h"
@implementation «PROJECTNAMEASIDENTIFIER»Delegate
@end
明らかな問題は、どういうわけか私がTemplateInfo.plistを間違って実行していることです。しかし、繰り返しになりますが、私の特別なアイテムが置き換えられていないだけでなく、標準的なアイテムも置き換えられていないことに注意してください!だから多分それはより深い問題です。
しかし、問題のあるTemplateInfo.plistが私の最良の仮説であるため、私が試したいくつかのバリエーションを紹介します。どちらも機能しません。
また:
{
FilesToMacroExpand = (
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_\_Prefix.pch",
"en.lproj/InfoPlist.strings",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_\_Prefix.pch",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_.icns",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_Delegate.h",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_Delegate.m",
"\_\_\_PROJECTNAMEASIDENTIFIER\_\_\_Template.html",
"Info.plist"
);
Description = "This project builds a cocoa-based \"element\" plugin for Sandvox.";
}
また:
{
FilesToMacroExpand = (
"«PROJECTNAMEASIDENTIFIER»\_Prefix.pch",
"en.lproj/InfoPlist.strings",
"«PROJECTNAMEASIDENTIFIER»\_Prefix.pch",
"«PROJECTNAMEASIDENTIFIER».icns",
"«PROJECTNAMEASIDENTIFIER»Delegate.h",
"«PROJECTNAMEASIDENTIFIER»Delegate.m",
"«PROJECTNAMEASIDENTIFIER»Template.html",
"Info.plist"
);
Description = "This project builds a cocoa-based \"element\" plugin for Sandvox.";
}
更新:___によって自動的に名前の変更が発生しているように見えますが、「FilesToRename」キーを追加しようとしました。これは、XML形式のplistコンテンツです(一部の人々は、UTF-8の性質について心配していたため、有効な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>Description</key>
<string>This project builds a cocoa-based "element" plugin for Sandvox.</string>
<key>FilesToMacroExpand</key>
<array>
<string>«PROJECTNAMEASIDENTIFIER»_Prefix.pch</string>
<string>en.lproj/InfoPlist.strings</string>
<string>«PROJECTNAMEASIDENTIFIER».icns</string>
<string>«PROJECTNAMEASIDENTIFIER»Delegate.h</string>
<string>«PROJECTNAMEASIDENTIFIER»Delegate.m</string>
<string>«PROJECTNAMEASIDENTIFIER»Template.html</string>
<string>Info.plist</string>
</array>
<key>FilesToRename</key>
<dict>
<key>___PROJECTNAMEASIDENTIFIER___.icns</key>
<string>«PROJECTNAMEASIDENTIFIER».icns</string>
<key>___PROJECTNAMEASIDENTIFIER___Delegate.h</key>
<string>«PROJECTNAMEASIDENTIFIER»Delegate.h</string>
<key>___PROJECTNAMEASIDENTIFIER___Delegate.m</key>
<string>«PROJECTNAMEASIDENTIFIER»Delegate.m</string>
<key>___PROJECTNAMEASIDENTIFIER___Template.html</key>
<string>«PROJECTNAMEASIDENTIFIER»Template.html</string>
<key>___PROJECTNAMEASIDENTIFIER____Prefix.pch</key>
<string>«PROJECTNAMEASIDENTIFIER»_Prefix.pch</string>
<key>___PROJECTNAME___.xcodeproj</key>
<string>«PROJECTNAME».xcodeproj</string>
</dict>
</dict>
</plist>