Android: restructure android search paths
- Sets CMAKE_FIND_ROOT_PATH unconditionally.
In the old implementation, if people set CMAKE_FIND_ROOT_PATH
, CMAKE_ANDROID_NDK
won't be added to find root. And all paths added to CMAKE_SYSTEM_*_PATH
below will be rerooted to the user specified root.
- Adds api level specific library path to CMAKE_SYSTEM_PREFIX_PATH.
As the discussion in [1], some people want the paths added by UnixPaths.cmake. They install their libraries according to GNUInstallDirs [2].
As a result, we can not clear CMAKE_SYSTEM_PREFIX_PATH
. It includes /usr so no matter what we specify in CMAKE_SYSTEM_LIBRARY_PATH
, /usr/lib/ will be searched first.
The author also pointed out a way to solve this issue [3]. In addition to other paths, CMake also searches <root>/<prefix>
without lib/<arch>
suffix [4]. So we can add the API specific lib path to the beginning of CMAKE_SYSTEM_PREFIX_PATH
, to have it searched first.
[1] https://android-review.googlesource.com/c/platform/ndk/+/1486800
[2] https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html#module:GNUInstallDirs
[3] https://github.com/android/ndk/issues/1179#issuecomment-613435081