回答:
アーキテクチャはあなたが構築したいものであり、有効なアーキテクチャはあなたのコードベースで構築することを思いつくことができるものです。
したがって、armv7sのバイナリのみをビルドしたい場合でも、同じソースコードでarmv7とarmv6を正しくコンパイルできます。つまりVALID_ARCHS = armv6 armv7 armv7s、ARCHS = armv7s実際にコードで構築したいのはそれだけなので、設定します。
または、Apple-eseの場合:
ARCHS(アーキテクチャ)
スペースで区切られた識別子のリスト。バイナリの対象となるアーキテクチャ(ABI、プロセッサモデル)を指定します。このビルド設定で複数のアーキテクチャが指定されている場合、生成されたバイナリには、指定された各アーキテクチャのオブジェクトコードが含まれる場合があります。
そして:
VALID_ARCHS(有効なアーキテクチャ)
スペースで区切られた識別子のリスト。バイナリを構築できるアーキテクチャを指定します。ビルド中、このリストはARCHSビルド設定の値と交差します。結果のリストは、バイナリを実行できるアーキテクチャを指定します。結果のアーキテクチャリストが空の場合、ターゲットはバイナリを生成しません。
ソース:Xcodeビルド設定リファレンス
実際には、そのままにしVALID_ARCHSて変更を心配する必要はありませんARCHS。構築するアーキテクチャを設定するためにいじるだけです。通常、デバッグビルドはjustに設定しNATIVE_ARCHます。これは、テスト/実行するマシンのデバッグバージョンと、サポートする予定のすべてのアーキテクチャのリリースビルドのみをビルドするためです。
Appleのドキュメントから、XcodeがビルドするバイナリはとValid Architectures 交差するリストであることがわかりArchitecturesます。
だから、私はジェレミーの答えが正しいとは思わない、と彼は言う:
したがって、armv7sのバイナリのみをビルドしたい場合でも、同じソースコード
でarmv7とarmv6を正しくコンパイルできます。したがってVALID_ARCHS = armv6 armv7 armv7s、コードで実際に構築したいのはそれだけなので、ARCHS = armv7sを設定します。
設定するとVALID_ARCHS = armv6 armv7 armv7s、ARCHS = armv7sバイナリXcodeのビルド結果はarmv7sになり、armv6 / armv7と互換性がなくなります。
また、armv6 / armv7 / armv7sと互換性を持たせる場合は、を設定する必要が VALID_ARCHS = armv6 armv7 armv7sありARCHS = armv6ます。このようにして、バイナリXcodeの結果はarmv6になり、armプロセッサは下位互換性があるため、armv6 / armv7 / armv7sの両方で正常に実行できます。 。