2016-08-22 4 views
1

Preprocessor Macroを特定のアーキテクチャ(arm64)用にXcodeに設定する必要があります。これどうやってするの?Xcode 7:アーキテクチャごとにプリプロセッサマクロを設定する

Stackoverflowに関する同様の質問があります:Xcode 6: Set Preprocessor Macros per architectureです。 しかし、私の場合Xcode 7はアーキテクチャを選ぶことができません。 Xcodeのバージョン7.1.17.3.1で同じ結果が試されました.Xcodeが提供する唯一のアーキテクチャオプションは「*」です(下の図を参照)。 Preprocessor settings section

は、念のためにここに私のアーキテクチャの設定です: Architectures settings section

私は実際にこれが必要なのか、なぜあなたはより多くの理解を与えるために: 私が言うように設定されたフラグに依存しているサードパーティ製のC-ライブラリを使用します32ビットまたは64ビットプラットフォーム上で実行されている場合ライブラリの統合ガイドから 注:「64ビットアーキテクチャ用に構築する場合、_64BITマクロは、Xcodeののプリプロセッサマクロセクションに追加しなければならない」

だからここは私が試したものです:

GCC_PREPROCESSOR_DEFINITIONS [アーチ= arm64]と GCC_PREPROCESSOR_DEFINITIONSを置き換えることによって、手動で .pbxprojファイルを修正する(上記)XcodeのUI
  • アーキテクチャ固有のマクロを設定する方法を見つけるため
    • [アーチ= *](所望の効果を与えませんでした)

    Xcodeの設定で何が間違っているのか考えていますか?Preprocessorセクションのアーキテクチャオプションが表示されないのはなぜですか?あるいは私の場合にマクロを設定する他の方法がありますか?

  • +0

    わかりませんが、プロジェクトをビルドする前に実行スクリプトを追加できます。あなたのスキームに移動します。スキームの編集>ビルド>前のアクションを選択し、クリックして実行スクリプトを追加します。 http://take.ms/qFcFzアップルの詳細https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/Articles/AddingaRunScriptBuildPhase.html –

    答えて

    0

    最後に私はそれを理解しました。

    達成された結果: _64BITマクロに関係なく、64ビットデバイスまたは実際の64ビットデバイスのシミュレータがそれにある、すべての(少なくとも今日知られている)64ビット環境に前処理中に添加されるであろう。

    ソリューションは、次のように手動で.pbxprojファイルを編集することです。だからここ

      GCC_PREPROCESSOR_DEFINITIONS = (
           "DEBUG=1", 
           "$(inherited)", 
          ); 
          "GCC_PREPROCESSOR_DEFINITIONS[arch=arm64]" = (
           "$(inherited)", 
           _64BIT, 
          ); 
          "GCC_PREPROCESSOR_DEFINITIONS[arch=x86_64]" = (
           "$(inherited)", 
           _64BIT, 
          ); 
    

    はデバッグ-configです:

    • 最初のセクションでは、すべてのアーキテクチャで適用されるデフォルトのマクロを定義します。
    • 第2および第3は、特定のアーキテクチャにのみ適用されるカスタムマクロを定義します。

    手動で行った変更は、プリプロセッサ設定エディタで表示されます。 エディタでXcodeのバグのように見えます。

    質問を投稿する前にこの方法を試したことに気づくことがありますが、試行の結果を誤解してしまいました。事は私がシミュレータ上で私のアプリをテストしたことであり、アーキテクチャは実際のデバイスとそれに対応するシミュレータ上では異なっている。私はarm64アーキテクチャーにマクロを組み込むように設定しましたが、実際のアーキテクチャーはx86_64でした。さらに参考のために

    すべてのアーキテクチャが実際に行われない場合は、this記事は説明する:

    • ARM7:iPhone 5で使用され、5C
    • 通り:最古のiOS 7 - サポートするデバイス
    • arm7sに使用されます
    • arm64:iPhone 5S 64ビットARMプロセッサの[と私は同じが新しいiPhoneのためであると考えている]
    • I386:32ビットシミュレータ用
    • x86_64版:シミュレートされたデバイスのi386とx86_64の "bit化" については、64ビットシミュレータ

    に使用されるが、ここではないMacの暗示されます。

    関連する問題