2012-04-26 6 views
34

ターゲットビルドの設定や関連するスキーム内で設定された環境変数によって制御される条件付きコードの結果と同じコードベースを使用して、多少異なる機能を持つ複数のアプリケーションまたはフレームワーク/ライブラリ製品を作成するには、Xcodeでターゲットを複製するのが最適です。まず、あなたの動作している基本バージョンを複製し、各ターゲットが使用する環境変数を設定し、次にインラインプリプロセッサ#ifdefステートメントでコード動作を分割します。Xcodeでターゲットを複製するとき、ターゲットが作成する前に、または作成したときに名前を設定する方法はありますか?

ただし、重複したターゲットはすべて「元のターゲット名のコピー」となります。これは名前を変更することもできますが、info.plistにもこの名前が付いています。また、いくつかの重要なビルド設定にも表示されることがあります。また、非有益なコピーへの参照をすべて削除する、あなたがどのようにそれを行うかに応じて複製されたターゲット名のバージョン。 iOSフレームワークを作成すると、これは特に問題を導入する傾向があります。

私の質問は、複製時に新しいターゲット名を指定できるターゲットを複製するテクニックがあるかどうかです。そのため、一時的なターゲット名が間違っていたり、名。あるいは、これを修正するために "リファクタ"機能を使用する方法がある場合、自動化された方法です。

この機能がXcodeに組み込まれていない理由を説明する質問に、何らかの誤った仮定が含まれている場合は、教えてください。私は4.3を使用しています。ナビゲータパネルで

+4

これはまだ運がない、そうですか? – phi

+2

それを行う方法が誰にもわからないのは残念です... –

+1

1年後にXcode5でこの問題が発生しましたが、私はこの問題を解決する理由を理解できません。 – meda

答えて

5

を経由して現在もサポートされていないいくつかのものが

  • いくつかのものを動作させるために必要ですそれが大きな改善となることに同意する;私は皆に話すことができませんが、私はかなり という名前のターゲットを望みません。私はfiling a Radarを提案します。少なくとも(thetarget ...まだ、製品の名前を変更しようとしていますが、Xcodeの6で(表示名などのような)他のすべて)

  • +1

    具体的な技術的解決策である唯一の答えは興味深く有益ではあるが、多くの開発者にとってはおそらく実用的ではなく、カスタム生成されたビルドシステムとXcodeの変更された実装とのやりとりに脆弱な側面があるかもしれないので、この1つは、これがより多くのレーダーを促進することを期待しています。 – Halle

    -4
    • 選択プロジェクト
    • あなたは
    • マウスの右クリックを複製し、Xcodeで
    • 名前の変更対象を「重複」を選択したい対象を選択:選択したターゲットとインライン編集を開始する上でクリックします。
    • ターミナルを開いてプロジェクトディレクトリ/フォルダに移動
    • svn statusを実行すると、XCodeの変更が反映されます。
    • XCodeは新しいInfocopy.plistファイルを作成し、使用する場合はバージョン管理下に追加しました。通常は、その次の手順を実行し、別の名前を選択します:
    • バージョン管理加算をキャンセル:$> SVNそれの名前を変更しInfocopy.plist
    • を元に戻す:$> MV Infocopy.plist YourNameInfo.plist
    • バージョンコントロールに追加します:$> MV OrigTargetCopy.xcscheme YourTargetName.xcscheme
    • 追加:$>のsvn
    • 名前の変更対象のファイル正しく "Info.plistファイル" という名前の設定を作成し、あなたの新しいターゲットにYourNameInfo.plist
    • 設定し、新しい名前を追加バージョン管理下の新しいターゲットファイル:$> svn add YourTargetName.xcscheme
    • "Product Name"という名前の新しいターゲットビルド設定で製品名を変更
    • 新しい「プリプロセッサマクロ」ビルド設定を新しいターゲットに設定することもできます。
    • YourNameInfo.plistを適切な値に設定します。
    • ターゲット固有のファイルのターゲット割り当てを設定します。通常、YourNameInfo.plistは新しいターゲットの一部にすぎません。他の同様のファイル(アイコン、スプラッシュスクリーン、その他のグラフィックスなど)がたくさんあるかもしれません。
    +0

    この回答を投稿した人は、タイトル、元の投稿者が投稿した質問の内容、またはこれを行うための1,2段階の方法を探している賞金の詳細のビットを読み取っていないようです。著者が解説した解決策、私が使っていた解決策はどちらも今のところこれより少ないステップしか取っていません。これは私たちがすでにやっていることより悪く、良くない。 –

    +0

    この解決策は、私が通常project.pbxprojで遭遇する古い名前へのすべての参照を説明していないようです。 – Halle

    0

    少し努力して、CMakeを使用してください。ビルドシステムジェネレータです。

    最初にプロジェクトを学んで設定するのは難しいかもしれませんし、Xcode(リソース追加など)で簡単に実行できないものもありますが、基本的な設定で簡単に新しいターゲットを作成することができます。

    基本的には、ソースツリーにCMakeLists.txt個のファイルを書き込んで、ライブラリとターゲットを定義してから、ソースファイルなどを定義し、毎回Xcodeプロジェクトを生成します。

    新しいターゲットを追加するのは非常に簡単になります:

    1. ADD_EXECUTABLE(Target_Name Source_Files)
    2. SET_TARGET_PROPERTIES(Target_Name PROPERTIES COMPILE_DEFINITIONS Your_Additional_Defines)
    3. 再実行してcmakeの。 (そのさえXcodeプロジェクトを閉じるために必要ではない)

    短所:

    • はセットアップに時間がかかります。
    • 時には研究は残念ながら、私はものの私強く、このための任意の現在のUIはありませんかなりくそ確信しているCMakeの
    +0

    +1私はCMakeがXcodeプロジェクトを生成できるかどうか分かりませんでした!再:ステップ3 - Xcodeの背後にあるプロジェクトファイルを変更する(つまり、プロジェクトを閉じたりXcodeを終了しない)、奇妙で診断が難しい不正行為につながる可能性があります。私は常に少なくとも*プロジェクトを終了し、最小の悲惨さでXcodeをすべて終了することを提案します。 – ipmcc

    +0

    あなたは正しいかもしれませんが、盲目的にXCodeを信頼しない方がいいでしょう:)。しかし、少なくとも私はバックグラウンドでこれらの "ライブ" cmake再実行を行うことによって問題に遭遇していませんでした。 – ecreif

    +0

    シュート、私はこれで濡れた毛布になるのが嫌いですが、あなたがこれを記述する方法、私が "いくつかのことは現在CMake経由でうまくサポートされていません" 「時には研究が必要なのは、私が避けようとしている退屈でエラーが起こりやすいステップよりも多くの労力のように聞こえる。私は苦労してCMakeを学ぶために必要な時間と労力を惜しみなく使っています。そうでなければ、私は実際にそれをやっていないので、私は手で知っていることをやり過ごすことができませんでしたしばしば。 –

    -3

    ダブルクリック以前のバージョンについては確かに)ターゲットを複製すると、 "コピー"アペンディエイトが生成され、すべてのローカライズされたメニューの名前が変更されます。しかし、ビルド設定/すべてのパッケージ化で製品名を更新すると元に戻すことができます。 Info.plistはSchemeの命名だけでなく、世話をする必要があります。

    -1

    の名前を変更することができればそれはそれほど重要ではありませんではない名前を変更するターゲット上

    関連する問題