区分NDK构建和Android构建

时间:2013-06-17 10:07:33

标签: android c android-ndk c-preprocessor

我构建的本机库需要在Android版本中构建,但也可以使用 NDK 构建。 如何区分使用 NDK 版本和Android版本之间的预处理器。

#ifdef __ANDROID__

#ifdef NDK ??? // does ndk export some symbols I can use here ?

foo();

#else // Android tree build

foo2();

#endig

#endif // __ANDROID__

1 个答案:

答案 0 :(得分:2)

我会使用其中一个平台构建环境变量来区分两个构建。这可能是DEVICE_NAMETARGET_DEVICEPLATFORM_VERSION或在我的项目范围之外定义的任何其他内容。并且,根据该环境变量,我在项目的 Android.mk 中定义了一个标志:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := foo

ifeq ($(DEVICE_NAME),)
    # no device name is defined, got to be an NDK build
    LOCAL_CFLAGS := -DANDROID_NDK
endif

然后在 foobar.c

#ifdef ANDROID_NDK
    foo();
#else
    foo2();