我尝试使用Android Studio使用cmake 3.14.0版本构建本机c ++项目。就像文档中一样:https://developer.android.com/studio/projects/add-native-code#use_a_custom_cmake_version。因此,我将version "3.14.0"
添加到build.gradle中,并将cmake.dir=C\:\\CMakeWin32
添加到有关vanilla cmake的local.properties中。
然后:
> Task :UnitTests:generateJsonModelArmDebug
> Task :UnitTests:generateJsonModelArmDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':UnitTests:generateJsonModelArmDebug'.
> Illegal char <:> at index 47: C:/j/client/dava.framework/Programs/UnitTests\C:/r15c/sources/android/cpufeatures/cpu-features.c
如果我在NDK捆绑包中使用默认的cmake 3.6,则一切正常。我的环境是:
Windows-10
Android Studio-3.4.1
gradle-尝试4.10.1和5.4.1
ndk-尝试15c和19c
在我的CMakeLists.txt文件中添加依赖项:
add_library( ${PROJECT_NAME} SHARED ${PLATFORM_ADDED_SRC} ${REMAINING_LIST} )
include(AndroidNdkModules)
android_ndk_import_module_cpufeatures()
target_link_libraries( ${PROJECT_NAME} cpufeatures)
我从错误消息中了解到C:/r15c/sources/android/cpufeatures/cpu-features.c
的完整路径,希望gradle与当前项目C:/j/client/dava.framework/Programs/UnitTests
的路径连接。我认为gradle及其如何使用cmake_server生成json代码模型的问题。但是如何解决呢?预先感谢。
更新(更多信息):
C:\j\client\dava.framework\Programs\UnitTests\Platforms\Android>gradlew :UnitTests:generateJsonModelArmDebug --info > log.txt 2>&1
source
部分中查看目标libcpufeatures.a具有指向一个源文件的完整路径。sourceDirectory
来自父项目C:/j/client/dava.framework/Programs/UnitTests
的遗物答案 0 :(得分:0)
Bug位于Google gradle插件中,因此我只是对其进行了升级,并且它与新的cmake 3.14兼容。 只需更新您的gradle插件即可:
dependencies { classpath 'com.android.tools.build:gradle:3.4.1' }