Cmake Ninja错误android。 “虽然存在文件

时间:2018-03-14 20:01:37

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

我一直在

  

ninja:错误:'/ root /code/CalcLib/libCalcLibAndroidx86.a',需要   '/root/code/compcorpsdk/build/intermediates/cmake/prod/release/obj/x86/libJumboFFT.so',   缺少并没有已知的规则

虽然我检查了两个目录中是否存在正确的文件,但我相信我已经在CmakeList.txt中正确设置了include-directories路径。

的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

2 个答案:

答案 0 :(得分:1)

set_target_properties 

在cmake中,不喜欢相对路径

请参阅此处: cmake:missing and no known rule to make it when I import a prebuilt library

答案 1 :(得分:0)

我相信您应该先使用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
)