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