编译 Vulkan-Samples时,遇到了如下shaderc编译报错。
ninja: error: '/Users/xiaxl/Library/Android/sdk/ndk/21.1.6352462/sources/third_party/shaderc/libs/c++_static/armeabi-v7a/libshaderc.a', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/lib-vulkan-lib.so', missing and no known rule to make it
一、错误原因
查看官方Shaderc相关介绍后,确认错误的原因是未编译Shaderc。
AndroidStudio在编译Vulkan-Samples相关工程时,无法找到libshaderc.a
依赖包导致报错。
二、问题解决
我们需要参考官方Shaderc相关描述,执行Shaderc编译:
- 进入
<ndk-root>/sources/third_party/shaderc/
目录; - 按官方描述执行如下编译命令:
# linux或Mac终端操作系统:
../../../ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk \
APP_STL:=c++_static APP_ABI=all libshaderc_combined -j16
# Windows操作系统:
..\..\..\ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk ^
APP_STL:=c++_static APP_ABI=all libshaderc_combined -j16
- 编译完成后的检查:
完成编译后,将在<ndk_root>/sources/third_party/shaderc/
目录下生成如下文件:
# 编译后生成的文件
include/
shaderc/
shaderc.h
shaderc.hpp
libs/
<stl_version>/
{all of the abis}
libshaderc.a
三、参考
AndroidDev:Vulkan使用入门
https://developer.android.google.cn/ndk/guides/graphics/getting-started?hl=zh
AndroidDev:编译Shaderc
https://developer.android.google.cn/ndk/guides/graphics/shader-compilers?hl=zh-cn