我构建的本机库需要在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__
答案 0 :(得分:2)
我会使用其中一个平台构建环境变量来区分两个构建。这可能是DEVICE_NAME
,TARGET_DEVICE
,PLATFORM_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();