如何在Android Studio中正确引入其他CMake项目
问题原因及解决方案
核心原因
你只通过add_subdirectory引入了hello库的构建配置,但是没有将hello库的目标关联到你项目自身的原生库编译目标上。Android Studio的CMake构建默认只会编译和最终生成产物有依赖关系的目标,无依赖的目标会被判定为无用,不会触发编译流程。
解决步骤
- 先确认hello库的CMakeLists中定义的静态库目标名称,即
add_library()配置的第一个参数,假设为hello。 - 找到顶层CMakeLists中你自身项目原生库的
target_link_libraries配置块,将hello库添加为依赖,示例如下:
# 替换your_native_lib为你项目实际的原生库名称,保留原有其他依赖配置 target_link_libraries( your_native_lib log android # 新增hello库依赖 hello )
- 清理项目构建缓存后重新编译,即可在指定的构建目录下生成libhello.a,同时也会自动链接到你的项目原生库中。
额外注意事项
add_subdirectory会自动创建构建输出目录,不需要提前调用file(MAKE_DIRECTORY)手动创建。- 建议将第三方库的构建目录放在项目自身的构建路径下,比如用
${CMAKE_CURRENT_BINARY_DIR}/hello作为构建路径,避免跨目录权限问题。 - 检查hello库的CMakeLists是否存在仅当自身作为顶层项目时才启用编译的逻辑(比如判断
CMAKE_SOURCE_DIR == CMAKE_CURRENT_SOURCE_DIR的分支),如果有需要删除对应判断,否则作为子项目引入时编译逻辑会被跳过。
内容的提问来源于stack exchange,提问作者candylife9
相关产品推荐
相关产品推荐

