Я использую Android studio с собственным проектом для использования скомпилированной библиотеки C ++. Я использую Gradle + CMake, чтобы связать проект с оболочкой для вызова библиотеки
Я определяю в моих local.properties переменную:
dependencies.common.dir="/home/vgonisanz/foo"
Мой вызов gradle.build CMake:
cmake {
cppFlags ""
arguments "-DANDROID_ABI=armeabi-v7a",
"-DDEPENDENCIES_COMMON_PATH=" + getCommonDir('dependencies.common.dir')
}
ndk {
abiFilters "armeabi-v7a"
}
Мой CMakelists.txt содержит следующий код:
set(COMMON_INCLUDE_PATH "${DEPENDENCIES_COMMON_PATH}/modules/module_foo/include")
message("Using dependency path: ${DEPENDENCIES_COMMON_PATH}")
message("Using include path: ${COMMON_INCLUDE_PATH}")
include_directories(${COMMON_INCLUDE_PATH})
Но когда я собираю библиотеку, не могу найти ожидаемый путь в $ {COMMON_INCLUDE_PATH}. Путь правильный и работает, если он жестко закодирован, поэтому я проверяю вывод CMake в моем файле app/.externalNativeBuild/cmake/debug/armeabi-v7a/cmake_build_output.txt
и вывод:
Using dependency path: "/home/vgonisanz/foo"
Using include path: "/home/vgonisanz/foo"/modules/module_foo/include
Configuring done
Проблема в том, что переменная CMake находится между кавычкой и нарушает сборку. Обычно я сопоставляю путь и переменные с CMake, поэтому, почему это происходит в среде Gradle?
Я мог бы установить переменные в gradle.build, но я хотел бы знать, существует ли способ решить в CMakeLists.txt, чтобы избежать его изменения таким образом.