67

私はいくつかのセミポータブルコードを書いていて、iPhone用にコンパイルしているときに検出できるようにしたいと思っています。だから私はのようなものが欲しいです#ifdef IPHONE_SDK...

おそらくXcodeは何かを定義していますが、プロジェクトのプロパティの下には何も表示されません。Googleはあまり役に立ちません。

4

3 に答える 3

116

「条件付きでソースコードをコンパイルする」の下のSDKドキュメントにあります

関連する定義は TARGET_OS_IPHONE (そして彼は TARGET_IPHONE_SIMULATOR を非推奨にしました) で、iOS フレームワーク内の /usr/include/TargetConditionals.h で定義されています。ツールチェーンの以前のバージョンでは、次のように記述する必要がありました。

#include "TargetConditionals.h"

しかし、これは現在の (xCode 6/iOS8) ツールチェーンでは不要になりました。

したがって、たとえば、デバイス用にビルドしている場合にコード ブロックのみをコンパイルする場合は、次のようにする必要があります。

#if !(TARGET_OS_SIMULATOR)
...
#endif
于 2008-09-28T23:47:20.047 に答える
24

定義されたすべてのマクロを確認するには、これをビルド構成の「その他の C フラグ」に追加します。

-g3 -save-temps -dD

いくつかのビルド エラーが発生しますが、コンパイラはすべての定義をプロジェクトのルート ディレクトリの .mi ファイルにダンプします。たとえば、grep を使用してそれらを確認できます。

grep define main.mi 

完了したら、ビルド設定からこれらのオプションを削除することを忘れないでください。

于 2008-10-06T06:01:21.123 に答える