【问题标题】:Cmake Ninja error android. "missing and no known rule to make it" although file existsCmake忍者错误android。尽管文件存在,但“缺少并且没有已知的规则”
【发布时间】:2018-08-23 12:18:25
【问题描述】:

我一直收到一个

ninja:错误:'/root/code/CalcLib/libCalcLibAndroidx86.a',需要 '/root/code/compcorpsdk/build/intermediates/cmake/prod/release/obj/x86/libJumboFFT.so', 丢失并且没有已知的规则来制作它

虽然我检查了两个目录都存在正确的文件,但我相信我在 CmakeList.txt 中正确设置了包含目录路径。

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

set(
P1 "/root/code/CalcLib"
CACHE STRING ""
)

message(${ANDROID_ABI})

file(GLOB CPP_FILES "*.cpp")

add_library(
JumboFFT
SHARED
${CPP_FILES}
)

include_directories(src/main/jni)
include_directories(${P1})

target_link_libraries(
JumboFFT
log
android
OpenSLES
${P1}/libCalcLibAndroid${ANDROID_ABI}.a
)

Gradle 组装输出 Gradle Asemble output text

【问题讨论】:

    标签: android cmake android-ndk android-gradle-plugin ninja


    【解决方案1】:
    set_target_properties 
    

    在 cmake 中不喜欢相对路径

    请看这里: cmake:missing and no known rule to make it when I import a prebuilt library

    【讨论】:

      【解决方案2】:

      我相信您应该首先使用 add_libraryset_target_properties 将其添加为库,然后将其链接:

      ...
      
      add_library(libCalcLibAndroid STATIC IMPORTED)
      set_target_properties(libCalcLibAndroid PROPERTIES
        IMPORTED_LINK_INTERFACE_LIBRARIES ""
        IMPORTED_LOCATION "${P1}/libCalcLibAndroid${ANDROID_ABI}.a"
      )
      
      target_link_libraries(
      JumboFFT
      log
      android
      OpenSLES
      libCalcLibAndroid
      )
      

      【讨论】:

      • 嗨,谢谢你的回复,我刚试过但没有运气:(同样的错误
      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多