设置CMAKE_PREFIX_PATH不与Android工具链工作
set CMAKE_PREFIX_PATH not working with Android Toolchain
我正在使用Android CMake工具链将CMake C和c++游戏移植到Android。
项目的库依赖项存储在PROJECTDIR/android_dependencies
中,我已将以下代码添加到CMake文件中以使用它们(我检查了目录和文件是否存在)。
set(CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/android_dependencies/${ANDROID_ABI}")
但是我的项目仍然说它找不到像OpenAL这样的依赖项(所有的库都被复制了)。
如果我将库复制到$NDK/platforms/android-9/usr/lib
,并将文件包含到$NDK/platforms/android-9/usr/include
,项目将正确编译。
我做错了什么?
我使用的是Ubuntu 16.04 64位
几乎所有的工具链都设置了变量CMAKE_SYSROOT。除了其他事情之外,这个变量可以为find_*
CMake命令使用的路径添加额外的"根"。但是默认情况下也会搜索"非根"路径。
一些工具链可能会设置变量CMAKE_FIND_ROOT_PATH_MODE_*
,以调整CMAKE_SYSROOT
在搜索事物时的行为。
。将变量CMAKE_FIND_ROOT_PATH_MODE_LIBRARY设置为ONLY
,使find_library
只搜索"根"路径,因此无法找到位于主机上的库。(这条规则也有例外,详见find_library的文档)。
脚本CMakeLists.txt
可以改变CMAKE_FIND_ROOT_PATH_MODE_*
变量的值,将它们设置为BOTH
(或者直接清除它们)。但通常这可能会破坏工具链(因此其他find_library
调用将在host上找到一些东西,而它们根本不打算找到任何东西)。
首选的方法是遵循工具链策略,在构建包本身之前将所有包的先决条件安装到sysroot中。
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 在clang++预处理器中确定gcc工具链版本
- Android P-9.0.0_r53 Logcat主缓冲区超出定义大小
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- Android NDK 中的预构建工具链和自定义工具链编译器之间的差异
- 为什么我们需要使用android工具链(或NDK)来编译在android应用程序上下文中运行的c/c++代码
- AOSP/Android源代码索引工具
- Android 构建工具链找不到/缺少 STL 标头目录
- Android NDK 工具链异常处理 seg 错误
- 在使用javah工具时包括Android平台jar
- CMake 在使用 android-cmake 工具链文件时找不到 Boost 库
- CMake(Android工具链)-运行链接命令时出错:没有这样的文件或目录
- 如何在Android平台工具中构建dexdump
- 设置CMAKE_PREFIX_PATH不与Android工具链工作
- 运行add_qt_Android_apk时,CMake Android工具链找不到arm的strip命令
- 如何在无头服务器上安装Android NDK Cmake工具?
- 为什么这段代码导致SIGSEGV (gcc编译器,cygwin下的Android NDK工具链)