我想在我的Android手机上运行 Vulkan ,目前,我陷入了试图让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不太熟悉,所以如果我犯了一些愚蠢的错误,请纠正我。预先感谢!
答案 0 :(得分:0)
确保您的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 )
参考:
答案 1 :(得分:0)
我也在忙于学习Vulkan,目前我只能提供vulkan示例帮助。他们在支持vulkan的android设备上工作。我正在使用诺基亚scirocco 8作为测试设备。看一下示例中的CMakeLists.txt,了解如何链接shaderc静态库。 https://github.com/googlesamples/vulkan-basic-samples/