cmake CMakeLists.txt fatal error: 'jni.h' file not found

错误特征

fatal error: 'jni.h' file not found

原因

c/c++源代码中引用了jni.h,而jni.h需要由jdk提供,但实际未配置jdk路径

解决

关于依赖头文件所在目录

CMakeLists.txt 添加jni.h 以及该头文件内部依赖头文件的全部目录,共涉及2个目录。

JAVA_HOME/include
JAVA_HOME/include/darwin

其中,

  • JAVA_HOME是JDK根目录
  • darvin是mac平台下的定制实现目录,如果非mac平台可以看下实际目录并根据实际情况修改,例如x86_64。
cmake如何配置

cmake依赖CMakeLists.txt 配置编译内容,增加头文件目录涉及的“方法”是target_include_directories(库名称 可见性 目录)

例如为共享库align增加jni.h系列依赖:

add_library(align SHARED c1.cpp c2.cpp c3.cpp)
target_include_directories(align PRIVATE $ENV{JAVA_HOME}/include/)
target_include_directories(align PRIVATE $ENV{JAVA_HOME}/include/darwin)

示例中并未依赖JAVA_HOME的具体目录,而是通过环境变量代替。对于cmake的配置文件CMakeLists.txt,可以通过$ENV{环境变量名}取得实际的环境变量值。

你可能感兴趣的:(cmake CMakeLists.txt fatal error: 'jni.h' file not found)