8

xcodebuild を使用してコマンド ライン ビルドを実行し、運がないときに #define マクロを設定しようとしています。

私は試してみましたが-DMYMACRO=1MYMACRO=1他に考えられるすべてのことを試しましたが、何も機能しません。

コマンド ラインから #define を設定するにはどうすればよいですか?

4

2 に答える 2

27

ロジャー、

あなたが探しているのは、コマンドライン ツール xcodebuild を介して GCC_PREPROCESSOR_MACROS を設定する方法です。xcodebuild の man ページには、これらの設定を適用するための形式が示されていますが、SYNOPSIS セクションでは、これを「setting=value ...」としか言及していません。

 xcodebuild [-project projectname] -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]
 xcodebuild -workspace workspacename -scheme schemename [-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...] [-userdefault=value ...]

最終的に、この形式を使用し、変更したい実際のビルド設定名を知ることで、ビルド設定値をコマンド ラインで直接設定することができます。当然、これは疑問を引き起こします...

ビルド設定名を見つけるにはどうすればよいですか?

よろしくお願いします!Xcode 4 のサイドバーは、実際のコマンドライン ビルド設定名を見つけるのに最も簡単な場所です。

注釈付きのビルド設定のスクリーン クリップ

ビルド設定名を探すときは、Xcode 4 のユーティリティ サイドバーのクイック ヘルプ インスペクターを参照してください。

  1. プロジェクトのビルド設定画面にアクセスします。
  2. Xcode の右上隅にある [オーガナイザー] ボタンの横にある [ユーティリティ] ボタンをクリックして、サイドバー (Xcode では「ユーティリティ」と呼ばれるもの) が表示されていることを確認します。
  3. [ユーティリティ] サイドバー内で、[クイック ヘルプ インスペクター] が表示されていることを確認します。

または、Option+Command+2 を使用して、クイック ヘルプ インスペクターを直接表示します。

最後に、ビルド設定を見つける準備ができました:

  1. 変更するビルド設定を検索するか、ビルド設定のリストをスクロールします。
  2. 関心のあるビルド設定をクリックして、Quick Help Inspector の更新を観察します。
  3. クイック ヘルプ インスペクターの [宣言] セクションに、使用するコマンド ライン ビルド設定名が表示されます。

最初に尋ねたプリプロセッサ マクロ設定の場合、その設定は次のとおりです。

GCC_PREPROCESSOR_DEFINITIONS

これを元の質問に戻すと、残りの xcodebuild コマンドとともに SETTING_NAME='DESIRED_VALUE' を指定するだけで、コマンドラインでこのビルド設定を設定できます。'TestApp' という名前の簡単なテスト プロジェクトの場合、プリプロセッサ マクロ 'BKM' を値 1 に設定する必要がありました。私の xcodebuild コマンドは次のようになります。

xcodebuild -project TestApp.xcodeproj -scheme TestApp GCC_PREPROCESSOR_DEFINITIONS='${inherited} BKM=1'

なぜそこに ${inherited} を入れたのですか?

プリプロセッサ マクロを使用している場合は、複数のマクロを使用している可能性があります。コマンド ラインからは変更したくないが、ターゲットまたはプロジェクトのビルド設定にコード化されているものもあります。「${inherited}」を使用すると、xcodebuild コマンドで定義したものだけを使用するのではなく、より高いレベルで定義されたビルド設定も使用するよう xcodebuild に指示されます。ほとんどの場合、 ${inherited} を使用して、セットアップした他の構成値を取得する必要があります。

値をアポストロフィで囲む必要がありますか?

複数の値を設定する場合は、値をアポストロフィで囲む必要があります。それ以外の場合、コマンド ラインから 2 つ以上のプリプロセッサ マクロを設定すると、2 つ目以降のマクロがプリプロセッサ マクロではなくビルド設定として解釈されます。 ...まったく正しい動作ではありません。アポストロフィは、設定の複数の値をまとめて収集する方法として機能します。サンプルの xcodebuild コマンドの場合、xcodebuild で継承された一連のプリプロセッサ マクロを特定の BKM 設定と共に使用するようにしたかったので、値をアポストロフィで囲み、xcodebuild に両方をプリプロセッサ マクロとして扱うように指示しました。

これはワークスペースでも機能しますか?

絶対!-project パラメーターの代わりに -workspace パラメーターを使用するようにコマンドを変更するだけで、ビジネスを開始できます。

于 2013-04-29T08:31:30.130 に答える