nihui / ncnn-android-mobilenetssd

The mobilenetssd object detection android example
91 stars 28 forks source link

CMakeLists.txt问题 #1

Open Dawson-huang opened 4 years ago

Dawson-huang commented 4 years ago

up主,你好,我尝试按步骤编译这个例程,但却一直报这个错误: Cause: executing external native build for cmake /home/xxx/ncnn-android-mobilenetssd/app/src/main/jni/CMakeLists.txt

我用的NDK版本是r16b,下载的ncnn-android-vulkan-lib.zip是最新的"android ios 预编译库 20200413 5580da4"版本

nihui commented 4 years ago

下载最新的 ncnn 20200616

Dawson-huang commented 4 years ago

@nihui 我下载了20200616的版本,代码也重新克隆了,还是会报这个错误

Dawson-huang commented 4 years ago

up主,这个问题是CMakeLists.txt中对安卓NDK版本的判断语句有个小小的bug,即当该宏定义ANDROID_NDK_MAJOR不存在的时候,就不能在第二个判断条件中直接引用它的值了(这里的原因不知道理解得对不对),所以此时cmake配置的时候会不成功(苦逼的我被这个没有多余报错提示信息的问题给困了好久QAQ)。我把第25-27行改成两段判断就可以配置成功了:

if(DEFINED ANDROID_NDK_MAJOR)
    if(${ANDROID_NDK_MAJOR} GREATER 20)
        set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-openmp")
    endif()
endif()

另外,好像up主的另外一个项目ncnn-android-benchmark的CMakeList.txt也是这么写的,不知道这是不是因为我用的是r16b的NDK而下载的是最新且依赖android-ndk-r21d的ncnn-android-vulkan-lib.zip包的问题?反正就算配置成功了我也没编译过去,需要换成r21d的NDK了