Android: Allow RPATH
Android binaries do support RPATH. Tested in adb shell of Android API 33 x86_64 emulator.
Step to reproduce
- Host OS: Linux
- CMake: 3.23.2
- NDK: 24.0.8215888
- Android Emulator: API 33 x86_64
cmake_minimum_required(VERSION 3.23)
project(CMakeTest)
set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
add_library(greet SHARED greet.cpp)
add_executable(app main.cpp)
target_link_libraries(app PRIVATE greet)
Configure with the following command:
cmake .. -DCMAKE_ANDROID_NDK=${ANDROID_NDK_HOME} -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=24 -DCMAKE_ANDROID_ARCH_ABI=x86_64 -DCMAKE_ANDROID_STL_TYPE=c++_shared
To build with RPATH, comment out https://gitlab.kitware.com/cmake/cmake/-/blob/v3.23.2/Modules/Platform/Android.cmake#L24
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "")
On Linux, Android.cmake
located in /usr/share/cmake/Modules/Platform
.
Edited by Brad King