0

我有一个我构建的本机库,需要在 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__
4

1 回答 1

2

我会使用其中一个平台构建环境变量来区分两个构建。这可能是DEVICE_NAME,TARGET_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();
于 2013-06-17T10:53:38.147 回答