Mac M2环境下执行CMake失败:未找到JNI组件
解决Mac M2编译SUMO时的cmake错误
1. 处理xcodebuild依赖报错
报错xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance的原因是当前仅安装了Command Line Tools,而xcodebuild需要完整Xcode环境:
- 从App Store安装完整Xcode(仅Command Line Tools无法满足需求)
- 安装完成后执行以下命令切换开发者目录并接受许可协议:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer sudo xcodebuild -license accept
2. 修复JNI找不到的问题
你的JAVA_HOME指向的是JRE(Java运行时环境)路径,而JNI依赖JDK(Java开发工具包)的头文件,导致cmake无法定位所需组件:
- 安装JDK(推荐OpenJDK或Oracle JDK),比如通过Homebrew安装OpenJDK:
brew install openjdk - 设置正确的
JAVA_HOME到JDK路径,以OpenJDK 17为例,路径通常为:
可将此命令添加到export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home~/.zshrc(M2 Mac默认shell为zsh),确保终端每次启动都生效。 - 重新运行cmake命令:
若cmake仍无法自动识别JNI,可手动指定路径(替换为你的JDK实际路径):cmake -B buildcmake -B build \ -DJAVA_INCLUDE_PATH=/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home/include \ -DJAVA_INCLUDE_PATH2=/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home/include/darwin \ -DJAVA_AWT_INCLUDE_PATH=/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home/include
内容的提问来源于stack exchange,提问作者Pragyaditya Das
相关产品推荐
相关产品推荐

