内部構造にcstructを使用するクラス(githubのNDTrie)があります。これにより、ユーザーは、fno-objc-arcを必要とする代わりにソースファイルに追加することで、自動参照カウントを使用してプロジェクトで使用しやすくなります。ユーザーがそのソースファイルのビルドフェーズで設定する方法はありますか。
2 に答える
いいえ、機能に基づいて翻訳の一部を分離し、この場合、その翻訳のフラグを変更することはできません。
別の角度からアプローチする必要があります。ARC 機能は、現在の翻訳のコンパイラ フラグに基づいて、前処理されたすべての入力を ARC が有効かどうかとして扱います。
最も明白な回避策:
0) 影響の軽減: 可能であれば、実装を非表示にします
1) 翻訳固有の条件: __has_feature(objc_arc)
ARC 対応の翻訳を扱っているかどうかを判断するために使用します。clang を使用している__has_feature(objc_arc)
場合、ARC が有効な場合、式は 1 に展開されます。次に、ARC が有効かどうかに応じて、プログラムの一部を条件付きで表示したり、別の方法で注釈を付けたりできます。
2) 検出して失敗する: 残りのいくつかのケースでは、次のオプションを選択できます。
// >> detect clang or GCC if needed
#if __has_feature(objc_arc)
#error This file cannot be compiled with ARC enabled (+HYPERLINK so you don't get a flooded inbox)
#endif
// << detect clang or GCC if needed
ファイルごとのコンパイラ フラグは、プロジェクトごとにファイルに追加されます (何らかの形式のマシン コードにコンパイルされることを意図したファイルは、通常、メタデータを回避しようとします)。フラグを指定して、Xcode プロジェクトの必須フィールドを更新する場合は、CocoaPodsを使用して依存関係のポッド ファイルを作成できます。基になるツールに残りを処理させます。