当前位置: 首页 > news >正文

MacOS编译hello_xr——记一次CMake搜索路径限制导致的ANDROID_NATIVE_APP_GLUE not found

  1. 首先,由于之前使用过Unity, 系统已经装好了android SDK和NDK, 所以在hello_xr文件夹下, 用local.properties文件来设置系统中二者的路径:
sdk.dir=/Applications/Unity/Hub/Editor/2022.3.48f1c1/PlaybackEngines/AndroidPlayer/SDK/
# ndk.dir=/Applications/Unity/Hub/Editor/2022.3.48f1c1/PlaybackEngines/AndroidPlayer/NDK

这里由于后面编译时, 系统提示ndk.dir这种方式已经落伍了,不推荐使用,所以注释掉了, 改为在build.gradle中配置其路径, 版本号也要进行对应的修改, build.gradle中修改后的对应处如下所示:

    android.ndkPath = "/Applications/Unity/Hub/Editor/2022.3.48f1c1/PlaybackEngines/AndroidPlayer/NDK/"ndkVersion "23.1.7779620"
  1. 编译期间,又遇到一个找不到ANDROID_NATIVE_APP_GLUE的问题, 当时报错如下:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake files:/Users/Documents/OpenXR-SDK-Source/src/tests/c_compile_test/ANDROID_NATIVE_APP_GLUEused as include directory in directory /Users/Documents/OpenXR-SDK-Source/src/tests/c_compile_test/Users/Documents/OpenXR-SDK-Source/src/tests/list_json/ANDROID_NATIVE_APP_GLUEused as include directory in directory /Users/Documents/OpenXR-SDK-Source/src/tests/list_json

搜了一下,对应处的CMakeLists.txt是这样写的:

#......
elseif(ANDROID)set(OPENGL_INCOMPATIBLE TRUE) #不兼容OPEN GLfind_path(ANDROID_NATIVE_APP_GLUE android_native_app_glue.hPATHS ${ANDROID_NDK}/sources/android/native_app_glue  )

也就是说, 在给定的目录下查找android_native_app_glue.h这个文件, 找到后将其所在目录赋给ANDROID_NATIVE_APP_GLUE.

于是确认了下系统中该目录是否存在该文件, 结果发现是有的.

那么为什么查找结果是not found呢?
请教了一下ChatGPT, 列出许多种可能, 最后定位到是这个问题:

在交叉编译时,CMake 的 CMAKE_FIND_ROOT_PATH 或 CMAKE_SYSROOT 参数可能会限制搜索路径。可以在
CMake 配置文件中临时打印这些变量的值,确保没有限制搜索范围:

message("CMAKE_FIND_ROOT_PATH is: ${CMAKE_FIND_ROOT_PATH}")
message("CMAKE_SYSROOT is: ${CMAKE_SYSROOT}")

如果它们包含限制,可以通过临时调整 CMAKE_FIND_ROOT_PATH_MODE_INCLUDE 和 CMAKE_FIND_ROOT_PATH_MODE_LIBRARY 的值,使其允许在本地路径中搜索:

set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)

经过调整后,就编译成功啦

http://www.lryc.cn/news/485409.html

相关文章:

  • 基于NI Vision和MATLAB的图像颜色识别与透视变换
  • 【Linux:IO多路复用(select、poll函数)
  • 计数排序(C语言)
  • LabVIEW弧焊参数测控系统
  • Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报
  • 【Linux】内核模版加载modprobe | lsmod
  • Android从Drawable资源Id直接生成Bitmap,Kotlin
  • 蓝桥杯——数组
  • 在Flutter中,禁止侧滑的方法
  • 黑盒测试案例设计方法的使用(1)
  • 第二十一章 TCP 客户端 服务器通信 - 客户端OPEN命令
  • pycharm报错:no module named cv2.cv2
  • Android音视频直播低延迟探究之:WLAN低延迟模式
  • docker 部署freeswitch(非编译方式)
  • OpenHarmony的公共事件
  • 深度学习transformer
  • 低成本出租屋5G CPE解决方案:ZX7981PG/ZX7981PM WIFI6千兆高速网络
  • 【黑马点评debug日记】redis登录跳转不成功
  • C#自定义特性-SQL
  • 协方差矩阵及其计算方法
  • 【OH】openHarmony开发环境搭建(基于windows子系统WSL)
  • Visual Studio Code 端口转发功能详解
  • Android Framework AMS(14)ContentProvider分析-1(CP组件应用及开机启动注册流程解读)
  • Three.js PBR材质
  • 智谱AI清影升级:引领AI视频进入音效新时代
  • 嵌入式硬件电子电路设计(五)MOS管详解(NMOS、PMOS、三极管跟mos管的区别)
  • Centos 9 安装 PostgreSQL 16 并支持远程访问
  • Dubbo源码解析(三)
  • HarmonyOS Next星河版笔记--界面开发(5)
  • Spring Boot3 实战案例合集上线了