私は現在、ビルドする必要があるiPhoneアプリケーションの "フレーバー"をたくさん持っています。理想的には、それぞれの「風味」のスキームを持ちたいと思います。各スキームは、コード内で分岐したり、info.plistファイルを前処理するために使用できる1つ以上のプリプロセッサ定義を定義(または設定)します。これは明らかに複数のターゲットを使って行うことができますが、アプリのさまざまな「味」を持つことができるので、目標数を下げるためにスキームを使用するのは素晴らしいことです。私の現在の考えは、プリアクションスクリプトの中でこれらのプリプロセッサ定義を追加することですが、GCC_PREPROCESSOR_DEFINITIONSを更新する方法は見つけられません。それは環境変数なので、GCC_PREPROCESSOR_DEFINITIONSに追加するアクセス権はありませんか?Xcodeスキームを介してプリプロセッサ定義を追加する
答えて
スキームにプリプロセッサ定義を設定させるという私の要求を満たすために、私が思いついた最善の解決策は、xcconfigファイルを変更するスキーマ事前アクションスクリプトと事後アクションスクリプトです。このファイルはビルド設定を更新してプリプロセッサ定義を更新し、プリプロセッサ定義を定義してinfo.plistを条件付きで変更できるようにします。他の誰かがこのルートを通過する場合は、ソース管理によってこのファイルがどのように処理されるかを考慮してください。
この記事の質問と関連した答えは私に役立ちました:How to append values in xcconfig variables?
こんにちはChristopher、これを拡張できますか?xcconfigファイルをどのように変更しますか? – jasongregori
場合によっては、スキームのビルド前スクリプトを実行できます。あなたはしかし、すべてのスキームのためのスクリプトを含める必要があります:
私は設定に添付することを好む:
私が持っているように次に、あなたは簡単に、さまざまな構成のためのプリプロセッサマクロを追加することができますここでのデバッグのために:
<プロジェクト名> _Prefix.pchファイルは、その旨プログラム全体のマクロを置くのに最適な場所である、ように私はここにある:
私の例では、デバッグモードではないときにコンソール出力を効果的にオフにして、少しスピードを上げています。
ありがとうDustin。私は可能な限り構成の数を減らしたいと思っています。コンソールの出力についての良いヒント。 –
あなたのすべてのリンクが壊れています:( –
今のところリンクが私のために働いています – Tony
複数のターゲットを定義し、ターゲット固有のビルド・オプションでプリプロセッサ・マクロを定義することはどうですか?次に、1つのスキームしか必要とせず、すべてのターゲットを1回のショットでビルドすることができます。それらのビルド構成は、それぞれ固有のビルド構成で行います。
提案してくれてありがとうございましたこれは良い解決策かもしれません。 –
私が正しくあなたの質問を理解している場合、あなたのソースコードにユーザ定義のプリプロセッサマクロの一部を追加するために探している、それらを追加する方法がありますターゲット内でXcodeを使用します。 (例えばGCC_PREPROCESSOR_DEFINITIONS = USE_TAPJOY)
ステップ1)マルコ名などのUSE_TAPJOY ステップ2を決定します)標的 - に行く>を選択し、タブ「設定を構築する」(すべてのタブが有効になっていることを確認してください) ステップ3)のための検索ボックスの検索で「プリプロセッサマクロ」) ステップ4)デバッグ/リリースセクション ステップ5を確認してください)あなたのマルコを入力しますが
ステップ6)は、以下の
For conditional include
#ifdef USE_TAPJOY
#import <Tapjoy/Tapjoy.h>
#endif
For conditional source code
#ifdef USE_TAPJOY // Tapjoy Connect Notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(tjcConnectSuccess:)
name:TJC_CONNECT_SUCCESS
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(tjcConnectFail:)
name:TJC_CONNECT_FAILED
object:nil];
#endif
としてソースコードでこのマクロを使用します幸運
これは質問ではありませんでした。質問は、それぞれのスキームごとに異なるマクロを設定する機能でしたが、ターゲットは1つだけです。 –
- 1. YoctoでCMAKE projet buildでプリプロセッサ定義を追加するには
- 2. Qt Creatorのリリースビルド専用のプリプロセッサ定義を追加してください
- 3. XcodeプリコンパイルヘッダのC++言語のプリプロセッサ定義とは何ですか?
- 4. スキームを使用してビルド設定を変更するXCode
- 5. プリプロセッサでループを再定義する
- 6. C#プリプロセッサを使用して参照を追加する
- 7. 使用プリプロセッサ定義は、私が定義されている
- 8. プリプロセッサはTypescriptで定義します
- 9. プラットフォームCプリプロセッサの定義
- 10. スキーム関数のチェックを定義する
- 11. 特定のスキームのバンドルアイテムを追加しますか?
- 12. gccプリプロセッサを使って#includeのファイル名を定義する
- 13. スキームにマクロを追加する
- 14. CMakeを使用してプリプロセッサ定義の値を取得
- 15. 再定義競合する複数のプリプロセッサ定義グローバル
- 16. 追加の属性を介してhas_many
- 17. cmakeを使用して_CRT_SECURE_NO_WARNINGS定義を追加する
- 18. Gradleでプリプロセッサ定義を設定するには
- 19. 親プロジェクトでプリプロセッサ定義を再定義する必要はありますか?
- 20. バッチビジュアルスタジオビルドのグローバル定義を追加する
- 21. jqueryを介して見出しタグにパディングを追加する
- 22. Wordpressでbody.phpを介してBodyに固定IDを追加する
- 23. WIX未定義のプリプロセッサ変数
- 24. WIN32 64ビットWindowsプラットフォームでのプリプロセッサ定義
- 25. プリプロセッサVS2010でのC++の定義
- 26. Wix3.5:未定義のプリプロセッサ変数「$(var.Platform」)
- 27. Netbeansを介してデータベースに値を追加する
- 28. ビューコントローラーを介してエンティティにデータを追加する
- 29. jFileChoserを介してjListにファイルを追加する
- 30. unixを介してセルトラストストアに証明書を追加する
あなたはこの答えをチェックアウトしたいと思うかもしれません:http:// stackoverflow。com/a/26433618/1055722 –