设置CMAKE_PREFIX_PATH不能使用Android工具链

Sui*_*oga 5 c c++ android cmake android-ndk

我正在使用Android CMake工具链将CMake C和C++游戏移植到Android.

存储了项目的库依赖项,PROJECTDIR/android_dependencies并且我已将以下代码添加到CMake文件以使用它们(我检查了目录和文件是否存在).

set(CMAKE_PREFIX_PATH "${PROJECT_SOURCE_DIR}/android_dependencies/${ANDROID_ABI}")
Run Code Online (Sandbox Code Playgroud)

但我的项目仍然说它无法找到像OpenAL这样的依赖项(所有的库都被复制了).

如果我将库复制到$NDK/platforms/android-9/usr/lib并包含文件到$NDK/platforms/android-9/usr/include项目正确编译.

我能做错什么?

我使用64位的Ubuntu 16.04

Tsy*_*rev 8

几乎所有工具链都设置了变量CMAKE_SYSROOT变量.除了其他内容之外,此变量可能会为路径添加额外的"根",由find_*CMake命令使用.但默认情况下也会搜索"非根"路径.

一些工具链可以设置变量CMAKE_FIND_ROOT_PATH_MODE_*,这可以调整CMAKE_SYSROOT搜索事物的行为.

例如,变量设置CMAKE_FIND_ROOT_PATH_MODE_LIBRARYONLY品牌find_library搜索 "扎根"的路径,这样一个无法找到位于主机上的库.(此规则有例外,有关详细信息,请参阅find_library的文档).

脚本CMakeLists.txt能够更改CMAKE_FIND_ROOT_PATH_MODE_*变量的值,并将它们设置为BOTH(或只是清除它们).但通常这可能会破坏工具链(因此其他find_library调用会在主机上找到某些内容而它们根本无法找到任何内容).

首选方法是遵循工具链策略并在构建程序包本身之前将所有程序包的先决条件安装到sysroot中.