我有一个我构建的 native 库,需要在 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();
关于android - 区分NDK构建和Android构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144982/