Я пытаюсь использовать Android Studio для создания собственного проекта c ++ с использованием версии cmake 3.14.0. Как в документации: https://developer.android.com/studio/projects/add-native-code#use_a_custom_cmake_version. Поэтому я добавляю version "3.14.0"
в свой build.gradle и добавляю cmake.dir=C\:\\CMakeWin32
в мои local.properties о vanilla cmake.
А потом:
> 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
Если я использую cmake 3.6 по умолчанию в комплекте NDK, все работает. Мое окружение:
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
- в копии файла журнала с сервера cmake и сохраните его в файле test.json
- Откройте test.json в Firefox и посмотрите целевой libcpufeatures.a в разделе
source
, где указан полный путь к одному исходному файлу.
sourceDirectory
остаются от родительского проекта C:/j/client/dava.framework/Programs/UnitTests
- поэтому я думаю, что gradle попытается объединить эту ошибку вместе в cmake или в работе gradle с ответом json от cmake.
![json view of responce from cmake-server](https://i.stack.imgur.com/vF3nb.png)