我的 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})
目标目标不会构建.so
或.a
文件,而.o
文件可用于其他目标。
问题是(据我了解),Gradle分析了CMake目标并期望每个目标都有一个输出文件。当我使用 gradlew 编译整个项目时,出现以下错误消息:
> Task :app:externalNativeBuildDebug FAILED 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
目标文件 lib.cc.o 已成功编译并存在。但是没有 smcxx_obj 文件夹,也没有 smcxx_obj.so 文件(这是预期的)。
是否可以解决此错误,例如,告诉Gradle对特定的CMake目标跳过此检查?