Код: Выделить всё
add_library(
test
SHARED
"test.h"
"test.cpp"
)
include_directories(${aTestIncludePath})
target_link_libraries(
test
PUBLIC ${aTestPath}
)
Конечно, это тоже работает хорошо, создаю библиотеку с именем liba.so в Ubuntu.
Затем я хочу собрать свою библиотеку для платформы Android, я использую команду cmake следующим образом:
Код: Выделить всё
cmake -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake -DANDROID_ABI="armeabi-v7a" -DANDROID_NDK=$ANDROID_NDK -DANDROID_PLATFORM=android-22 ..
Мне нужно указать DANDROID_ABI, чтобы сообщить CMake, какую архитектуру я хочу, например x86,armeabi-v7a,arm64- v8a и т. д. Итак, возникает самый запутанный момент:
Моя библиотека зависит от третьей стороны с именем aTest, означает ли это, что если я хочу создать свою библиотеку для архитектуры Android х86, Armeabi-v7a Мне также необходимо скомпилировать сторонний исходный код для архитектуры Android x86, Armeabi-v7a? сгенерировать стороннюю библиотеку разной архитектуры и вызвать ее, снова выполнить приведенную выше команду?
Это вообще не выглядит научным!
Если третья сторона зависит от другой третьей стороне, это будет проблемой!
например, liA.so зависит от liB.so, liB.so зависит от libC.so
Мне нужно скомпилировать архитектуру Android x86, версию libC.so для Armeabi-v7a и затем использует его для скомпилируйте liB.so и, наконец, liC.so.
Есть ли способ скомпилировать один раз и получить библиотеку целевой архитектуры?
Подробнее здесь: https://stackoverflow.com/questions/730 ... shall-i-do