Skip to content

Commit

Permalink
修订protobuf在android下的构建流程
Browse files Browse the repository at this point in the history
  • Loading branch information
owent committed Oct 10, 2020
1 parent f8b8a0e commit d40198d
Showing 1 changed file with 14 additions and 24 deletions.
38 changes: 14 additions & 24 deletions 3rd_party/protobuf/protobuf.cmake
Expand Up @@ -109,30 +109,11 @@ if (NOT 3RD_PARTY_PROTOBUF_BIN_PROTOC OR (NOT 3RD_PARTY_PROTOBUF_LINK_NAME AND N

project_build_tools_append_cmake_options_for_lib(3RD_PARTY_PROTOBUF_FLAG_OPTIONS)

# MSVC 必须用静态库,而且会被用/MT编译。我们要把默认的/MD改为/MT
# 使用 /MD protobuf容易跨堆管理数据,容易崩溃,/MT依赖较少不容易出问题
# 注意protobuf的 RelWithDebInfo 默认使用 /MT 而本工程默认是 /MTd
# if (MSVC)
# set (3RD_PARTY_PROTOBUF_BUILD_SHARED_LIBS -DBUILD_SHARED_LIBS=OFF)
# # add_compiler_define(PROTOBUF_USE_DLLS) # MSVC 使用动态库必须加这个选项
# foreach(flag_var
# CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
# CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
# if(${flag_var} MATCHES "/MD")
# string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
# endif(${flag_var} MATCHES "/MD")
# endforeach(flag_var)
# #else ()
# # 其他情况使用默认值即可
# # set (3RD_PARTY_PROTOBUF_BUILD_SHARED_LIBS OFF)
# endif ()

list(APPEND CMAKE_INCLUDE_PATH "${3RD_PARTY_PROTOBUF_ROOT_DIR}/include")
if (CMAKE_ANDROID_ARCH_ABI)
list(APPEND CMAKE_LIBRARY_PATH "${3RD_PARTY_PROTOBUF_ROOT_DIR}/lib/${CMAKE_ANDROID_ARCH_ABI}" "${3RD_PARTY_PROTOBUF_ROOT_DIR}/${CMAKE_INSTALL_BINDIR}")
else ()
list(APPEND CMAKE_LIBRARY_PATH "${3RD_PARTY_PROTOBUF_ROOT_DIR}/${CMAKE_INSTALL_LIBDIR}" "${3RD_PARTY_PROTOBUF_ROOT_DIR}/${CMAKE_INSTALL_BINDIR}")
endif()
set(3RD_PARTY_PROTOBUF_ROOT_DIR_BACKUP_CMAKE_FIND_ROOT_PATH ${CMAKE_FIND_ROOT_PATH})
set(3RD_PARTY_PROTOBUF_ROOT_DIR_BACKUP_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
set(3RD_PARTY_PROTOBUF_ROOT_DIR_NEED_RESTORE TRUE)
list(APPEND CMAKE_FIND_ROOT_PATH ${3RD_PARTY_PROTOBUF_ROOT_DIR})
list(APPEND CMAKE_PREFIX_PATH ${3RD_PARTY_PROTOBUF_ROOT_DIR})

if (NOT PROJECT_PREBUILT_PLATFORM_NAME STREQUAL PROJECT_PREBUILT_HOST_PLATFORM_NAME)
list(APPEND CMAKE_PROGRAM_PATH "${3RD_PARTY_PROTOBUF_HOST_ROOT_DIR}/${CMAKE_INSTALL_BINDIR}")
Expand Down Expand Up @@ -293,3 +274,12 @@ if (NOT 3RD_PARTY_PROTOBUF_BIN_PROTOC OR (NOT 3RD_PARTY_PROTOBUF_LINK_NAME AND N
else()
PROJECT_LIBATBUS_PROTOBUF_IMPORT()
endif()

if (3RD_PARTY_PROTOBUF_ROOT_DIR_NEED_RESTORE)
set(CMAKE_FIND_ROOT_PATH ${3RD_PARTY_PROTOBUF_ROOT_DIR_BACKUP_CMAKE_FIND_ROOT_PATH})
set(CMAKE_PREFIX_PATH ${3RD_PARTY_PROTOBUF_ROOT_DIR_BACKUP_CMAKE_PREFIX_PATH})

unset(3RD_PARTY_PROTOBUF_ROOT_DIR_BACKUP_CMAKE_FIND_ROOT_PATH)
unset(3RD_PARTY_PROTOBUF_ROOT_DIR_BACKUP_CMAKE_PREFIX_PATH)
unset(3RD_PARTY_PROTOBUF_ROOT_DIR_NEED_RESTORE)
endif ()

0 comments on commit d40198d

Please sign in to comment.