Renderscript с Android NDK и CMake - PullRequest
       73

Renderscript с Android NDK и CMake

0 голосов
/ 01 ноября 2019

Я пытаюсь собрать собственное ядро ​​с Renderscript в нативной разработке Android. Но застрял на этапе компиляции. Я взял ссылку на 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
        )

Первые несколько частей просто находят заголовки для встроенной библиотеки для Renderscript в Android NDK.

Ошибка при сборке библиотеки renderscript. Предполагается построить файл threshold.rs и сгенерировать пару header и cpp (ScriptC_threshold.h и ScriptC_threshold.cpp), которые будут включены в исходный код renderscript.

Однако скрипт сборки не генерирует заголовки ScriptC_threshold.h. Что такое процедура или конфигурация CMakeList, которая позволяет мне генерировать заголовочный файл из rs файлов?

Обновление 1 По предложению Дэна я меняю сценарий сборки с cmakeList на Android. тип машиныТем не менее, я получил еще одну ошибку

[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

Кажется, процесс сборки не удалось создать файл .bc из сценария .rs. Я снова застрял. Я загрузил свой код в Github , он должен быть в состоянии воспроизвести.

...