Я на машине с Linux и хочу скомпилировать исходный код C ++ в собственную библиотеку для платформы Android, поэтому я вызываю CMake с помощью следующей команды:
cmake -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK=/home/stav/Android/Sdk/ndk-bundle -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
Это приводит к следующей ошибке:
-- Android: Targeting API '28' with architecture 'x86', ABI 'x86', and processor 'i686'
CMake Error at /usr/share/cmake-3.12/Modules/Platform/Android/Determine-Compiler-NDK.cmake:97 (message):
Android: No toolchain for ABI 'x86' found in the NDK:
/home/stav/Android/Sdk/ndk-bundle
Call Stack (most recent call first):
/usr/share/cmake-3.12/Modules/Platform/Android/Determine- Compiler.cmake:39 (include)
/usr/share/cmake-3.12/Modules/Platform/Android-Determine-C.cmake:1 (include)
/usr/share/cmake-3.12/Modules/CMakeDetermineCCompiler.cmake:27 (include)
CMakeLists.txt:3 (project)
-- Configuring incomplete, errors occurred!
See also "/home/stav/cmake_test/build/CMakeFiles/CMakeOutput.log".
(Примечание: в этом примере я выбрал ABI x86, но на самом деле я получаю эту ошибку независимо от того, какой ABI я выберу, будь то x86, x86_64, arm и т. Д.)
Однако, когда я смотрю в каталог: $ {NDK-DIRECTORY} / toolschains / он содержит подкаталог с именем 'x86-4-9'.
Кроме того, в каталоге $ {NDK-DIRECTORY} / build / core / toolchains /
есть еще один каталог с именем 'x86-clang'.
Так что я не понимаю, почему CMake говорит мне, что не может найти цепочку инструментов для x86 ABI, когда она там есть?
Возможно, я неправильно понял, как работает процесс кросс-компиляции Android.
К сожалению, мне было трудно понять это, так как в Интернете, похоже, нет большой документации по этому поводу.