如何在cmake中使用FIND_JNI

26

我正在尝试编写一个构建脚本,替换掉自动构建工具,需要正确使用FIND_JNI。

我可以编写简单的构建脚本,但它不能正确地找到jni.h文件。

我需要找到一种合适的方法(不使用hack)来定义Java include路径,因为这个问题需要对其他用户是可移植的。

2个回答

36

以下代码适用于我。在您的根目录下的CMakeLists.txt文件中添加:

find_package(JNI)

if (JNI_FOUND)
    message (STATUS "JNI_INCLUDE_DIRS=${JNI_INCLUDE_DIRS}")
    message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}")
endif()

3

那个解决方案对我没有用,我使用了:

find_package(JNI REQUIRED)    
include_directories(${JNI_INCLUDE_DIRS})

并且

echo $JAVA_HOME

必须返回有效的路径。


1
注意:如果使用CMake 3.24+,请使用由find_package(JNI REQUIRED)导入的JNI::JNI目标(而不是老式的*_INCLUDE_DIRS):https://cmake.org/cmake/help/latest/module/FindJNI.html - JonasVautherin
@JonasVautherin,您能否展示一下如何使用新版本的完整示例? - Jire
类似于 target_link_libraries(my_target PRIVATE JNI::JNI) 这样的东西。 - JonasVautherin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接