FindJNI

查找 Java 本地接口 (JNI) 头文件和库。

JNI 使在 Java 虚拟机 (JVM) 或 Android 上的 Dalvik 虚拟机 (DVM) 中运行的 Java 代码能够调用和被用 C 和 C++ 等其他语言编写的本地应用程序和库调用。

此模块查找 Java 是否已安装,并确定头文件和库的位置。它还确定库的名称。调用者可以设置变量 JAVA_HOME 以显式指定 Java 安装前缀。

3.24 版本新增: 添加了导入的目标、组件 AWTJVM 和 Android NDK 支持。如果未指定组件,则在以 Android 为目标时,该模块默认为空组件列表;否则,默认为所有可用组件。

使用 Android NDK 时,将报告相应的软件包版本,并且可以请求特定版本。在 Android API 级别 31 及更高版本中,可以请求额外的 NativeHelper 组件。NativeHelper 也作为 JVM 组件的隐式依赖项公开(仅当这不会引起冲突时),它提供对 JVM 函数的统一访问。

导入的目标

3.24 版本新增。

JNI::JNI

主 JNI 目标,仅当找到 jni.h 时定义。

JNI::AWT

Java AWT 本地接口 (JAWT) 库,仅当找到组件 AWT 时定义。

JNI::JVM

Java 虚拟机 (JVM) 库,仅当找到组件 JVM 时定义。

JNI::NativeHelper

在以 Android API 级别 31 及更高版本为目标时,导入的目标将提供对 libnativehelper.so 的访问,该库公开诸如 JNI_CreateJavaVM 等 JVM 函数。

结果变量

此模块设置以下结果变量

JNI_INCLUDE_DIRS

要使用的包含目录。

JNI_LIBRARIES

要使用的库(JAWT 和 JVM)。

JNI_FOUND

TRUE 如果找到 JNI 头文件和库,则为 TRUE。

JNI_<component>_FOUND

3.24 版本新增。

TRUE 如果找到 <component>,则为 TRUE。

JNI_VERSION

完整的 Android NDK 软件包版本(包括 -beta3-rc1 等后缀),否则为未定义。

JNI_VERSION_MAJOR

3.24 版本新增。

Android NDK 主版本,否则为未定义。

JNI_VERSION_MINOR

3.24 版本新增。

Android NDK 次版本,否则为未定义。

JNI_VERSION_PATCH

3.24 版本新增。

Android NDK 补丁版本,否则为未定义。

缓存变量

以下缓存变量也可设置或使用

JAVA_AWT_LIBRARY

Java AWT 本地接口 (JAWT) 库的路径。

JAVA_JVM_LIBRARY

Java 虚拟机 (JVM) 库的路径。

JAVA_INCLUDE_PATH

jni.h 的包含路径。

JAVA_INCLUDE_PATH2

机器相关头文件 jni_md.hjniport.h 的包含路径。仅当 jni.h 依赖于其中一个头文件时,才定义该变量。相比之下,Android NDK jni.h 通常可以独立使用。

JAVA_AWT_INCLUDE_PATH

jawt.h 的包含路径。