3

プロジェクトテンプレートを作成しようとしていますが、これに関するドキュメントが不十分であるか、存在しません。

いくつかのテンプレートファイルでリバースエンジニアリングを行うと、次のことがわかりました。ただし、実際には機能しません。

まず、プロジェクトテンプレートを次の内部にインストールする必要があることがわかりました。

〜/ライブラリ/アプリケーションサポート/開発者/共有/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>
4

6 に答える 6

4

「FilesToRename」セクションを使用する可能性があります。以下は、PyObjC Cocoa Document Based Application テンプレートからのものです。それは正常に動作します。

    <?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 application written in Python that uses the NSDocument architecture.</string>
        <key>FilesToMacroExpand</key>
        <array>
                <string>«PROJECTNAME»_Prefix.pch</string>
                <string>Info.plist</string>
                <string>English.lproj/InfoPlist.strings</string>
                <string>English.lproj/MainMenu.xib</string>
                <string>English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib</string>
                <string>main.py</string>
                <string>«PROJECTNAMEASIDENTIFIER»Document.py</string>
                <string>main.m</string>
        </array>
        <key>FilesToRename</key>
        <dict>
                <key>CocoaAppDocument.py</key>
                <string>«PROJECTNAMEASIDENTIFIER»Document.py</string>
                <key>CocoaDocApp_Prefix.pch</key>
                <string>«PROJECTNAMEASIDENTIFIER»_Prefix.pch</string>
                <key>English.lproj/CocoaAppDocument.xib</key>
                <string>English.lproj/«PROJECTNAMEASIDENTIFIER»Document.xib</string>
        </dict>
</dict>
</plist>
于 2008-10-06T22:13:23.533 に答える
4

もう 1 つのリソースは、Jesse Grosjean のXcodeTemplateFactoryです。これは無料でオープン ソースであり、将来の頭痛の種から解放される可能性があります。

于 2008-10-06T22:47:48.673 に答える
3

Chris の回答 (「テンプレートには 2 つのスタイルがあります...」) に加えて、別のプラットフォームのテンプレートで新しいスタイルの例を見つけることができます...

次の抜粋は、3 つのアンダーバーを使用したいくつかの典型的な置換変数の例を示しています。これらを Foo___BarDelegate.m の guillamot ベースの変数の代わりに使用すると、機能するはずです。

//
//  ___PROJECTNAMEASIDENTIFIER___AppDelegate.m
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  Copyright ___ORGANIZATIONNAME___ ___YEAR___. All rights reserved.
//

#import "___PROJECTNAMEASIDENTIFIER___AppDelegate.h"

@implementation ___PROJECTNAMEASIDENTIFIER___AppDelegate
于 2008-10-08T07:59:58.387 に答える
2

テンプレートには 2 つのスタイルがあり、テンプレート マクロ区切り文字によって区別されます。古いスタイルは UTF-8 ファイルで MacRoman guillamot を使用し、新しいスタイルは全体で 3 つのアンダーバーを使用します。混ぜ合わせることはできません。新しいスタイルは 3.1 以降専用であり、置換するファイル名にも 3 つのアンダーバーを使用する必要があります。

于 2008-10-07T22:05:32.270 に答える
0

なぜこれらの「<<」のような記号が欠落しているのですか?これが、テンプレートタグを認識して置き換えない理由xcodeです。

于 2009-09-24T00:21:45.783 に答える
0

私は同じ問題に頭を悩ませていました!

私にとって、plist作品にファイルを追加すると、htmlファイルがphpファイルに変更され、解析されます。しかし今では、リストの最初のいくつかの項目のみを解析します。古いhtmlファイルはまだです: «PROJECTNAME» このプログラムのように、リストにあるアイテムの数を数えません...

しかし、それをしないコードの場所はどこですか... ?

于 2009-09-24T12:22:36.667 に答える