FindJNI¶
查找 Java 本地接口 (JNI) 头文件和库。
JNI 使在 Java 虚拟机 (JVM) 或 Android 上的 Dalvik 虚拟机 (DVM) 中运行的 Java 代码能够调用和被用 C 和 C++ 等其他语言编写的本地应用程序和库调用。
此模块查找 Java 是否已安装,并确定头文件和库的位置。它还确定库的名称。调用者可以设置变量 JAVA_HOME
以显式指定 Java 安装前缀。
3.24 版本新增: 添加了导入的目标、组件 AWT
、JVM
和 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.h
和jniport.h
的包含路径。仅当jni.h
依赖于其中一个头文件时,才定义该变量。相比之下,Android NDKjni.h
通常可以独立使用。JAVA_AWT_INCLUDE_PATH
jawt.h
的包含路径。