Cmake忍者错误android。尽管文件存在,但“缺少并且没有已知的规则”
Posted
技术标签:
【中文标题】Cmake忍者错误android。尽管文件存在,但“缺少并且没有已知的规则”【英文标题】:Cmake Ninja error android. "missing and no known rule to make it" although file exists 【发布时间】: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
【问题讨论】:
【参考方案1】:set_target_properties
在 cmake 中不喜欢相对路径
请看这里: cmake:missing and no known rule to make it when I import a prebuilt library
【讨论】:
【参考方案2】:我相信您应该首先使用 add_library
和 set_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
)
【讨论】:
嗨,谢谢你的回复,我刚试过但没有运气:(同样的错误以上是关于Cmake忍者错误android。尽管文件存在,但“缺少并且没有已知的规则”的主要内容,如果未能解决你的问题,请参考以下文章
尽管没有更改任何来源,但 CMake 会重建自定义目标 [重复]
Gradle 和 Cmake 无法找到绝对存在的 cpp 文件
CMake add_custom_target:忍者在命令完成之前抑制输出,因此无法进行用户交互
我可以在 android p 中使用 android.mk 吗?我得到了忍者:错误:未知目标 'MODULES-IN-xxxx'