我的 build.gradle 文件包含以下内容,用于使用 CMake 构建项目:
externalNativeBuild {
cmake {
// Provides a relative path to your CMake build script.
version "3.13.0+"
path "../subproj/smcxx/CMakeLists.txt"
}
}
CMakeList.txt定义了多个目标,但有问题的是这个:
set(SOURCES "src/lib.cc")
add_library(smcxx_obj OBJECT ${SOURCES})
一个 OBJECT 目标不会生成一个
.so
或 .a
文件,相反,.o
文件可以在其他目标中使用。问题是(据我了解),Gradle 分析 CMake 目标并期望每个目标都有输出文件。当我使用 gradlew 编译整个项目时,我会得到以下错误消息:
> Task :app:externalNativeBuildDebug FAILED对象文件 lib.cc.o 已经成功编译并存在。但是没有smcxx_obj文件夹或smcxx_obj.so文件(这是期望的)。
FAILURE: Build failed with an exception.
* What went wrong: Execution failed for task ':app:externalNativeBuildDebug'. > Expected output file at /home/cytrinox/src/androidapp/app/.cxx/cmake/debug/armeabi-v7a/smcxx_obj for target smcxx_obj but there was none
是否有可能解决此错误,例如通过告诉 Gradle 跳过特定的 CMake 目标检查来解决?