Я создал несколько пользовательских целевых исполнений в модуле CMakeLists.txt
, на который ссылаются в соответствии со стандартным шаблоном в модуле build.gradle
со следующим:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
CMakeLists.txt
содержит следующие команды(Я думаю, что я включил все, что уместно здесь):
add_custom_command(
OUTPUT ${BUILT_PRODUCT_FILEPATH} # The library built by ${CUSTOM_BUILD_COMMAND}, defined elsewhere
COMMAND ${CUSTOM_BUILD_COMMAND} --product ${PRODUCT_NAME} ${CUSTOM_BUILD_ARGS}
DEPENDS ${SOURCE_FILES} ${BUILT_PRODUCT_DEPENDENCIES}
WORKING_DIRECTORY ${PROJECT_DIRECTORY}
VERBATIM
)
add_custom_command(
OUTPUT ${OUTPUT_PRODUCT_FILEPATH} # filename of BUILT_PRODUCT_FILEPATH in the CMAKE_LIBRARY_OUTPUT_DIRECTORY
COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_PRODUCT_FILEPATH} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
DEPENDS ${BUILT_PRODUCT_FILEPATH}
)
add_custom_target(
${PRODUCT_NAME} ALL # NOTE: I'm using ALL here - could this be part of the issue?
DEPENDS ${OUTPUT_PRODUCT_FILEPATH}
)
Когда я запускаю cmake -G Ninja $MODULE_PATH && cmake --build .
, мои цели создаются, и библиотеки .so
попадают в APK, как и ожидалось.
Также, если я запускаю Refresh Linked C++ Projects
в Android Studio и перехожу на $MODULE_PATH/.externalNativeBuild/cmake/debug/armeabi-v7a
и запускаю ninja
, сборка тоже работает (как указано выше).
Что не работает простонажимая Build
, Make Project
, Rebuild Project
или что-либо подобное из самой Android Studio.Собственная сборка успешно завершается в 0, но ничего не получается.Каталог build/intermediates/cmake
даже не создается.
Вопрос в том, какие цели ставит Android Studio при создании проекта?И как мне заставить его создавать свои собственные цели, которые, как кажется, отлично работают в любой другой среде?