【发布时间】:2018-06-26 06:58:12
【问题描述】:
我在我的模块的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。
此外,如果我在 Android Studio 中运行 Refresh Linked C++ Projects 并导航到 $MODULE_PATH/.externalNativeBuild/cmake/debug/armeabi-v7a 并运行 ninja,则构建也可以正常工作(如上所述)。
不起作用只需按下 Build、Make Project、Rebuild Project 或 Android Studio 本身中的任何类似内容。本机构建似乎在 0 秒内成功“完成”,但没有构建任何内容。 build/intermediates/cmake 目录甚至根本没有被创建。
问题是:Android Studio 在制作项目时会构建哪些目标?以及如何让它构建我的自定义目标,在任何其他环境下似乎都可以正常工作?
【问题讨论】:
-
我是否可能需要为 Android Studio 添加一个
install()命令才能将其注册为目标?我无法让install使用自定义目标。
标签: android android-studio cmake