You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ExternalProject_Add编译Android平台google/protobuf失败问题咨询

问题原因及修复方案

核心配置错误点

  • 预先定义的ANDROID_CMAKE_ARGS没有传递给ExternalProject_Add的CMAKE_ARGS参数,导致protobuf子项目无法识别Android交叉编译环境,不会触发对应编译流程
  • 没有给你的Native库目标添加对protobuf-external的依赖,CMake默认不会主动构建未被关联的ExternalProject目标,只会生成目录结构
  • ExternalProject_Get_Property拼写错误(你写的EXternalProject_Get_Property前两个字母都大写,不符合函数命名规范,会导致源目录路径获取失败)
  • 缺少protobuf核心编译参数匹配原有bash脚本的配置,比如静态库编译、PIC参数配置等

修正后的CMake配置

set(ANDROID_CMAKE_ARGS
        -DANDROID_ABI=${ANDROID_ABI}
        -DANDROID_PLATFORM=${ANDROID_PLATFORM}
        -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
        -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
        -DANDROID_NDK=${ANDROID_NDK}
        -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -fPIC -fpie -O3
        -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -fPIC -fpie -O3
        -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
        -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
        -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
        -G${CMAKE_GENERATOR})

ExternalProject_Add(
  protobuf-external
  PREFIX protobuf
  URL ${PROTOBUF_TAR_GZ}
  BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/protobuf
  # 传入Android编译相关参数
  CMAKE_ARGS
    ${ANDROID_CMAKE_ARGS}
    "-Dprotobuf_BUILD_TESTS:BOOL=OFF"
    "-Dprotobuf_BUILD_EXAMPLES:BOOL=OFF"
    "-Dprotobuf_WITH_ZLIB:BOOL=OFF"
    # 匹配原bash脚本的静态库编译配置
    "-Dprotobuf_BUILD_SHARED_LIBS:BOOL=OFF"
  SOURCE_SUBDIR cmake
  BUILD_ALWAYS 1
  STEP_TARGETS build
  INSTALL_COMMAND ""
)

# 修正函数拼写错误
ExternalProject_Get_Property(protobuf-external source_dir)
include_directories(${source_dir}/src)
link_directories(${CMAKE_CURRENT_BINARY_DIR}/protobuf)

# 关键配置:给你自己的Native库添加依赖,触发protobuf编译,替换native-lib为你的Native库名
add_dependencies(native-lib protobuf-external)
# 链接时增加protobuf库,示例:
# target_link_libraries(native-lib protobuf)

内容的提问来源于stack exchange,提问作者user16967562

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:06:04