我正在使用Android工具链将CMake C和C++游戏移植到安卓上。
该项目的库依赖项存储在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位
发布于 2016-10-17 07:21:27
几乎所有的工具链都设置变量赛鲁特变量。除了其他之外,这个变量还可以为find_* CMake命令使用的路径添加额外的“根”。但默认情况下,也会搜索“非根”路径。
一些工具链可能设置变量CMAKE_FIND_ROOT_PATH_MODE_*,在搜索事物时调整CMAKE_SYSROOT的行为。
例如,将变量图书馆设置为ONLY使find_library只搜索“根”路径,因此找不到位于主机上的库。(此规则有例外,请参阅图书馆以获得更多详细信息)。
脚本CMakeLists.txt能够更改CMAKE_FIND_ROOT_PATH_MODE_*变量的值,并将它们设置为BOTH (或只清除它们)。但是通常情况下,这可能会破坏工具链(因此其他find_library调用会在主机上找到一些东西,而它们却根本找不到任何东西)。
首选的方法是遵循工具链策略,并在构建包本身之前将所有包的前提before安装到sysroot中。
https://stackoverflow.com/questions/40054495
复制相似问题