1

これは私の他の質問に関連しています

Apportable でプロジェクトをビルドすると、Linux/Android プラットフォームが想定されます。これらのプリプロセッサ フラグが設定されていると思います。

__linux
ANDROID

しかし、私のソース コード (OpenGL の描画) は Android には対応しておらず、iOS にしか対応していません。そのため、(Linux や Android ではなく) Apportable のプリプロセッサ フラグを検出し、iOS 固有の処理を実行したいと考えています。

前処理段階で適切なプラットフォームを検出するにはどうすればよいですか? (Apportable の事前定義されたプリプロセッサ フラグとは何ですか?)

4

2 に答える 2

2

メッセージ プラグマを使用すると、プリプロセッサ マクロが定義されているかどうかを簡単に確認できます。

// will always print, to detect cases where file wasn't actually built
#pragma message "-------------------------ALWAYS----------------------------"

// if the macros are defined, the pragma message should be logged
#ifdef __linux
#pragma message "__linux"
#endif
#ifdef ANDROID
#pragma message "ANDROID"
#endif

これにより、定義されているマクロの警告メッセージが出力されます。

/.../KTTypes.h:15:9: warning: -------------------------ALWAYS---------------------------- [-W#pragma-messages]
#pragma message "-------------------------ALWAYS----------------------------"
        ^
/.../KTTypes.h:17:9: warning: __linux [-W#pragma-messages]
#pragma message "__linux"
        ^
/.../KTTypes.h:20:9: warning: ANDROID [-W#pragma-messages]
#pragma message "ANDROID"

そうです、ANDROID両方__linuxとも apportable でビルドするときに定義され、Xcode 内からビルドするときに定義されません。

于 2013-05-25T14:18:21.237 に答える
1

ANDROID はビルド システムによって定義されますが、Apportable プラットフォームには Android にない多くの機能があるためです。APPORTABLEapportable ビルド システムによるビルドを示すように定義されています。

Apportable ビルドに固有の追加のビルド フラグは、次の場所にあります。

~/.apportable/SDK/site_scons/android/ndk.py
于 2013-05-25T18:47:54.510 に答える