我一直在尝试使用以下设置为Android armeabi-v7 a编译C库:
- Ubuntu
- CMake 3.22
- 安卓系统开发工具10406996_latest
然后我用sdkmanager安装
- 构建工具34.0.0
- 平台android-34
- platform-tools
- 电话:+86-21 - 8888888
所有这些都可以在/opt/android/
和/opt/android/ndk
中找到。
我使用一个CMakeLists.txt文件,其中包含以下配置位:
set(CMAKE_SYSTEM_NAME Android)
set(ANDROID_NDK_VERSION "26.1.10909125")
set(ANDROID_ABI "armeabi-v7a")
set(ANDROID_HOME "/opt/android")
set(ANDROID_NDK "${ANDROID_HOME}/ndk/${ANDROID_NDK_VERSION}")
set(ANDROID_PLATFORM "android-34")
set(ANDROID_ARM_NEON ON)
set(CMAKE_SYSTEM_VERSION 34)
set(CMAKE_ANDROID_ARCH_ABI "${ANDROID_ABI}")
set(CMAKE_TOOLCHAIN_FILE "${ANDROID_NDK}/build/cmake/android.toolchain.cmake")
set(CMAKE_ANDROID_NDK "${ANDROID_NDK}")
字符串
CMake生成失败,并出现以下错误:
-- Android: Targeting API '34' with architecture 'arm', ABI 'armeabi-v7a', and processor 'armv7-a'
CMake Error at /usr/share/cmake-3.22/Modules/Platform/Android-Initialize.cmake:97 (message):
Android: The system root directory needed for the selected Android version
and architecture does not exist:
/opt/android/ndk/26.1.10909125/platforms/android-34/arch-arm
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake:21 (include)
CMakeLists.txt:5 (project)
型
我不明白的是为什么CMake在ndk
中查找platforms
目录,而sdkmanager
似乎将所有内容都安装在ANDROID_HOME
的根目录下(例如/opt/android
)。此外,在/opt/android/platforms/android-34
中似乎没有任何arch-arm
目录。
有没有知道与这些版本不兼容的地方?或者我遗漏了一些明显的东西?
谢谢你,谢谢
1条答案
按热度按时间ws51t4hk1#
根据@Tsyvarev的建议,替换:
第一个月
. by:
ìnclude("${ANDROID_NDK}/build/cmake/android.toolchain.cmake")
个......对我很有用。