FindJNI

尋找 Java Native Interface (JNI) 標頭檔和函式庫。

JNI 使在 Java 虛擬機器 (JVM) 或 Android 上的 Dalvik 虛擬機器 (DVM) 中執行的 Java 程式碼,能夠呼叫和被以其他語言(如 C 和 C++)編寫的原生應用程式和函式庫呼叫。

此模組會尋找 Java 是否已安裝,並確定標頭檔和函式庫的位置。它也會確定函式庫的名稱。呼叫者可以設定變數 JAVA_HOME 以明確指定 Java 安裝前綴。

版本 3.24 新增: 新增了匯入目標、組件 AWTJVM 和 Android NDK 支援。如果未指定組件,當目標為 Android 時,模組預設為空的組件列表,否則為所有可用的組件。

當使用 Android NDK 時,會報告相應的套件版本,並且可以請求特定的版本。在 Android API level 31 及更高版本中,可以請求額外的 NativeHelper 組件。NativeHelper 也作為 JVM 組件的隱含依賴項公開(僅當這不會引起衝突時),它提供了對 JVM 函數的統一存取。

匯入目標

版本 3.24 新增。

JNI::JNI

主要 JNI 目標,僅在找到 jni.h 時定義。

JNI::AWT

Java AWT Native Interface (JAWT) 函式庫,僅在找到組件 AWT 時定義。

JNI::JVM

Java Virtual Machine (JVM) 函式庫,僅在找到組件 JVM 時定義。

JNI::NativeHelper

當目標為 Android API level 31 及更高版本時,匯入目標將提供對 libnativehelper.so 的存取,該函式庫公開了 JVM 函數,例如 JNI_CreateJavaVM

結果變數

此模組設定以下結果變數

JNI_INCLUDE_DIRS

要使用的 include 目錄。

JNI_LIBRARIES

要使用的函式庫 (JAWT 和 JVM)。

JNI_FOUND

如果找到 JNI 標頭檔和函式庫,則為 TRUE

JNI_<component>_FOUND

版本 3.24 新增。

如果找到 <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 Native Interface (JAWT) 函式庫的路徑。

JAVA_JVM_LIBRARY

Java Virtual Machine (JVM) 函式庫的路徑。

JAVA_INCLUDE_PATH

jni.h 的 include 路徑。

JAVA_INCLUDE_PATH2

到機器相關標頭檔 jni_md.hjniport.h 的 include 路徑。僅當 jni.h 依賴於這些標頭檔之一時,才定義此變數。相反地,Android NDK jni.h 通常可以獨立使用。

JAVA_AWT_INCLUDE_PATH

jawt.h 的 include 路徑。