protobuf windows lib链接库生成
来源:互联网 发布:女生bmi多少最好看知乎 编辑:程序博客网 时间:2024/05/21 07:08
1、首先到github下载:protobuf-master、googlemock-master分别解压。
2、然后把googlemock-master文件夹重命名为gmock,然后拷贝到protobuf-master文件夹下面
3、安装cmake,把cmake的cmakelist文件目录指向:protobuf-master/cmake文件夹下面
4、然后选择配置vs2013 x64位,进行编译,如果遇到找不到gtest-all.cc文件,那么修改cmakelist.txt文件夹,把与test相关的配置全部删了,因为我们不需要测试
5、生成代码c++,静态、动态链接问题:md、mt等,那么可以直接删除cmakelist.txt文件来里面的mt的选项
最后的cmakelist.txt文件为:
# Minimum CMake requiredcmake_minimum_required(VERSION 2.8.12)if(protobuf_VERBOSE) message(STATUS "Protocol Buffers Configuring...")endif()# CMake policiescmake_policy(SET CMP0022 NEW)# Projectproject(protobuf C CXX)# Optionsoption(protobuf_BUILD_TESTS "Build tests" OFF)option(protobuf_BUILD_EXAMPLES "Build examples" OFF)if (BUILD_SHARED_LIBS) set(protobuf_BUILD_SHARED_LIBS_DEFAULT ON)else (BUILD_SHARED_LIBS) set(protobuf_BUILD_SHARED_LIBS_DEFAULT OFF)endif (BUILD_SHARED_LIBS)option(protobuf_BUILD_SHARED_LIBS "Build Shared Libraries" ${protobuf_BUILD_SHARED_LIBS_DEFAULT})include(CMakeDependentOption)cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" OFF "NOT protobuf_BUILD_SHARED_LIBS" OFF)if (MSVC) set(protobuf_WITH_ZLIB_DEFAULT OFF)else (MSVC) set(protobuf_WITH_ZLIB_DEFAULT ON)endif (MSVC)option(protobuf_WITH_ZLIB "Build with zlib support" ${protobuf_WITH_ZLIB_DEFAULT})set(protobuf_DEBUG_POSTFIX "d" CACHE STRING "Default debug postfix")mark_as_advanced(protobuf_DEBUG_POSTFIX)# User optionsinclude(protobuf-options.cmake)# Path to main configure scriptset(protobuf_CONFIGURE_SCRIPT "../configure.ac")# Parse configure scriptset(protobuf_AC_INIT_REGEX "^AC_INIT\\(\\[([^]]+)\\],\\[([^]]+)\\],\\[([^]]+)\\],\\[([^]]+)\\]\\)$")file(STRINGS "${protobuf_CONFIGURE_SCRIPT}" protobuf_AC_INIT_LINE LIMIT_COUNT 1 REGEX "^AC_INIT")# Descriptionstring(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\1" protobuf_DESCRIPTION "${protobuf_AC_INIT_LINE}")# Versionstring(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\2" protobuf_VERSION_STRING "${protobuf_AC_INIT_LINE}")# Contactstring(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\3" protobuf_CONTACT "${protobuf_AC_INIT_LINE}")# Parse version tweaksset(protobuf_VERSION_REGEX "^([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)$")string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\1" protobuf_VERSION_MAJOR "${protobuf_VERSION_STRING}")string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\2" protobuf_VERSION_MINOR "${protobuf_VERSION_STRING}")string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\3" protobuf_VERSION_PATCH "${protobuf_VERSION_STRING}")string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\4" protobuf_VERSION_PRERELEASE "${protobuf_VERSION_STRING}")# Package versionset(protobuf_VERSION "${protobuf_VERSION_MAJOR}.${protobuf_VERSION_MINOR}.${protobuf_VERSION_PATCH}")if(protobuf_VERSION_PRERELEASE) set(protobuf_VERSION "${protobuf_VERSION}-${protobuf_VERSION_PRERELEASE}")endif()if(protobuf_VERBOSE) message(STATUS "Configuration script parsing status [") message(STATUS " Description : ${protobuf_DESCRIPTION}") message(STATUS " Version : ${protobuf_VERSION} (${protobuf_VERSION_STRING})") message(STATUS " Contact : ${protobuf_CONTACT}") message(STATUS "]")endif()add_definitions(-DGOOGLE_PROTOBUF_CMAKE_BUILD)find_package(Threads REQUIRED)if (CMAKE_USE_PTHREADS_INIT) add_definitions(-DHAVE_PTHREAD)endif (CMAKE_USE_PTHREADS_INIT)if (protobuf_WITH_ZLIB) find_package(ZLIB) if (ZLIB_FOUND) set(HAVE_ZLIB 1) # FindZLIB module define ZLIB_INCLUDE_DIRS variable # Set ZLIB_INCLUDE_DIRECTORIES for compatible set(ZLIB_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRECTORIES} ${ZLIB_INCLUDE_DIRS}) # Using imported target if exists if (TARGET ZLIB::ZLIB) set(ZLIB_LIBRARIES ZLIB::ZLIB) endif (TARGET ZLIB::ZLIB) else (ZLIB_FOUND) set(HAVE_ZLIB 0) # Explicitly set these to empty (override NOT_FOUND) so cmake doesn't # complain when we use them later. set(ZLIB_INCLUDE_DIRECTORIES) set(ZLIB_LIBRARIES) endif (ZLIB_FOUND)endif (protobuf_WITH_ZLIB)if (HAVE_ZLIB) add_definitions(-DHAVE_ZLIB)endif (HAVE_ZLIB)if (MSVC) # Build with multiple processes add_definitions(/MP) add_definitions(/wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305) # Allow big object add_definitions(/bigobj) string(REPLACE "/" "\\" PROTOBUF_SOURCE_WIN32_PATH ${protobuf_SOURCE_DIR}) string(REPLACE "/" "\\" PROTOBUF_BINARY_WIN32_PATH ${protobuf_BINARY_DIR}) configure_file(extract_includes.bat.in extract_includes.bat)endif (MSVC)get_filename_component(protobuf_source_dir ${protobuf_SOURCE_DIR} PATH)include_directories( ${ZLIB_INCLUDE_DIRECTORIES} ${protobuf_BINARY_DIR} ${protobuf_source_dir}/src)if (MSVC) # Add the "lib" prefix for generated .lib outputs. set(LIB_PREFIX lib)else (MSVC) # When building with "make", "lib" prefix will be added automatically by # the build tool. set(LIB_PREFIX)endif (MSVC)include(libprotobuf-lite.cmake)include(libprotobuf.cmake)include(libprotoc.cmake)include(protoc.cmake)include(install.cmake)if (protobuf_BUILD_EXAMPLES) include(examples.cmake)endif (protobuf_BUILD_EXAMPLES)if(protobuf_VERBOSE) message(STATUS "Protocol Buffers Configuring done")endif()
0 0
- protobuf windows lib链接库生成
- 在windows下用Qt creator + mingw编译protobuf源码生成静态链接库的方法
- windows编译生成protobuf库(使用minGW编译)
- 详解生成静态链接库lib文件和调用
- 动态链接库dll和lib文件的生成
- vs2013 创建调用链接库 没有生成 “.lib” 问题
- windows下创建并使用静态链接库(.lib)
- dll和lib(包括静态链接库和与dll同时生成的lib)
- dll和lib(包括静态链接库和与dll同时生成的lib)
- dll和lib(包括静态链接库和与dll同时生成的lib)
- protobuf-cpp-3.2.0编译Windows的libprotobuf.lib
- windows lua使用protobuf 环境生成
- 静态链接库lib
- Lib 静态链接库
- VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
- kaldi 在Windows下编译生成lib库
- 生成动态链接库DLL但未生成lib文件的解决办法
- Lib 静态链接库 -1
- python图形处理库Python Imaging Library (PIL)简介及安装
- java数据类型
- cocos2d - JS 计时器(schedule)
- Python列表数组字典
- php根据汉字获取拼音(php基于拼音搜索实现原理)
- protobuf windows lib链接库生成
- 策略模式(Strategy)
- 仿滴滴抢单倒计时的Demo
- oracle的文件结构
- Codeforces #363 One Bomb
- cmd 命令 之总结
- centos 安装python PIL模块
- 独木舟上的旅行
- 测试工程师修炼笔记 _Selenium自学笔记1(环境搭建java版)