FindJNI¶
尋找 Java Native Interface (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 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.h
和jniport.h
的 include 路徑。僅當jni.h
依賴於這些標頭檔之一時,才定義此變數。相反地,Android NDKjni.h
通常可以獨立使用。JAVA_AWT_INCLUDE_PATH
到
jawt.h
的 include 路徑。