Android ネイティブ開発で Renderscript を使用してカスタム カーネルを構築しようとしています。しかし、コンパイルの段階で行き詰まりました。https://github.com/rpattabi/renderscript-ndk-cmakeを参考にしました。以下は私のCMakeList.txtです
cmake_minimum_required(VERSION 3.4.1)
if(${CMAKE_BUILD_TYPE} MATCHES Release)
set (SRC_RS_GENERATED_PATH
build/generated/source/rs/release)
else()
set (SRC_RS_GENERATED_PATH
build/generated/source/rs/debug)
endif()
set(RENDER_SCRIPT_HEADERS_PATH ${CMAKE_ANDROID_NDK}/toolchains/renderscript/prebuilt/${ANDROID_HOST_TAG}/platform/rs)
include_directories(
${RENDER_SCRIPT_HEADERS_PATH}/cpp
${RENDER_SCRIPT_HEADERS_PATH}/scriptc
${RENDER_SCRIPT_HEADERS_PATH}
${SRC_RS_GENERATED_PATH}
)
set(RENDER_SCRIPT_LIB_PATH ${CMAKE_ANDROID_NDK}/toolchains/renderscript/prebuilt/${ANDROID_HOST_TAG}/platform/${ANDROID_SYSROOT_ABI})
find_library(rscript
NAMES RScpp_static libRScpp_static.a
HINTS ${RENDER_SCRIPT_LIB_PATH}/
)
find_library(blasv8
NAMES blasV8 libblasV8.so
HINTS ${RENDER_SCRIPT_LIB_PATH}/)
find_library(rssupport
NAMES libRSSupport.so
HINTS ${RENDER_SCRIPT_LIB_PATH}/)
add_library(
renderscript
SHARED
RenderScript.cpp
threshold.rs
${SRC_RS_GENERATED_PATH}/ScriptC_threshold.cpp #This file is missing <<<<<<<<<<<<<<<
)
target_link_libraries(
renderscript
log
${rscript}
${rssupport}
${blasv8}
android
jnigraphics
)
最初のいくつかの部分は、Android NDK で renderscript 用のビルド済みライブラリのヘッダーを見つけるだけです。
renderscript
ライブラリ部分のビルド時にエラーが発生します。ファイルをビルドしthreshold.rs
、ヘッダーと cpp のペア (ScriptC_threshold.h と ScriptC_threshold.cpp) を生成するとします。これはソース コードにrenderscript
含まれます。
ScriptC_threshold.h
ただし、ビルド スクリプトはヘッダーを生成しません。ファイルからヘッダー ファイルを生成できる手順または CMakeList 構成は何rs
ですか?
更新 1 Dan の提案に従って、ビルド スクリプトを cmakeList から Android.mk に変更します。ただし、別のエラーが発生しました
[x86] Compile RS : renderscript <= threshold.rs
error: error opening 'E:/dev/android/RenderScriptMk/app/E:/dev/android/RenderScriptMk/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/renderscript/\threshold.bc': Invalid argument
make: *** [E:/dev/android/RenderScriptMk/app/build/intermediates/ndkBuild/debug/obj/local/x86/objs-debug/renderscript/threshold.o] Error 1
ビルド プロセスが .rs スクリプトから .bc ファイルを生成できなかったようです。私は再び立ち往生しています。コードをGithubにアップロードしました。再現できるはずです。