Как правильно найти и связать NDK shaderc lib с вашим проектом в Android Studio? - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу запустить Vulkan на моем телефоне с Android, и в настоящее время я застрял в точке, пытаясь заставить CMake найти libshaderc.

То, что я сделал в первую очередьсобрать shaderc:

cd <my-ndk-root>/sources/third_party/shaderc
../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL:=c++_static APP_ABI=all NDK_TOOLCHAIN_VERSION:=clang libshaderc_combined -j16

И внутри моего CMakeLists.txt у меня есть:

get_filename_component(SHADERC_SRC
    ${ANDROID_NDK}/sources/third_party/shaderc
    ABSOLUTE)
add_library(shaderc_lib STATIC IMPORTED)
set_target_properties(shaderc_lib PROPERTIES IMPORTED_LOCATION
    ${SHADERC_SRC}/libs/${ANDROID_STL}/${ANDROID_ABI}/libshaderc.a)

Но CMake не может найти shaderc_lib и завершился ошибкой:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:

shaderc_lib

Обратите внимание, что я уже проверил, что у меня libshaderc.a под [my-ndk-root]/sources/third_party/shaderc/libs:

 .
└── c++_static
    ├── arm64-v8a
    │   └── libshaderc.a
    ├── armeabi-v7a
    │   └── libshaderc.a
    ├── x86
    │   └── libshaderc.a
    └── x86_64
        └── libshaderc.a

5 directories, 4 files

Я не очень знаком с CMake и NDK, поэтому, если я сделал какую-нибудь глупостьошибки, пожалуйста, исправьте меня.Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Я тоже занят изучением Вулкана, и единственная помощь, которую я могу сейчас предоставить, - это образцы Вулкана.Они работают на устройстве Android, которое поддерживает Vulkan.Я использую Nokia Scirocco 8 в качестве моего тестового устройства.Посмотрите на CMakeLists.txt в примерах, как связать статическую библиотеку shaderc.https://github.com/googlesamples/vulkan-basic-samples/

0 голосов
/ 06 декабря 2018

Убедитесь, что ваш путь CMake указывает на правильное место.Кроме того, ваша libshaderc.a является статической библиотекой, и вам необходимо связать ее с вашей общей библиотекой, например, libshaderc-shared.so, используя следующую конфигурацию CMake:

target_link_libraries( libshaderc-shared
                   [my-ndk-root]/sources/third_party/shaderc/libs/c++_static/${ANDROID_ABI}/libshaderc.a )

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...