linux下protobuf 下载并cmake编译安装全过程脚本
2017-06-05 12:16
495 查看
protobuf源码下载
github上下载最新版本的protobuf源码zip包,并解压缩到本地fetch_protobuf.sh
#!/bin/bash shell_folder=$(cd "$(dirname "$0")";pwd) pushd $shell_folder #如果指定的文件/文件夹存在则删除,删除失败则中止脚本 remove_if_exist(){ if [ $# -eq 1 ] then if [ -e $1 ] then rm $1 -fr if [ ! $? -eq 0 ] then exit -1 fi fi return 0 else echo invalid argument: echo $* exit -1 fi } exit_on_error(){ if [ ! $? -eq 0 ] then exit -1 fi } # 如果文件存在且checksum与$2指定的md5相等则返回 1,否则返回0 # $1 待检查的文件路径 # $2 md5校验码 need_download(){ if [ $# -eq 2 ] then if [ -f $1 ]; then echo "File already exists. Checking md5..." os=`uname -s` if [ "$os" = "Linux" ]; then checksum=`md5sum $1 | awk '{ print $1 }'` elif [ "$os" = "Darwin" ]; then checksum=`cat $1 | md5` fi if [ "$checksum" = "$2" ]; then echo "Checksum is correct. No need to download $1." return 1 else echo "Checksum is incorrect. Need to download again $1" fi else return 0 fi else echo invalid argument: echo $* exit -1 fi } # 从github上下载源码,如果本地不存在指定的zip包,或md5校验码不匹配则从github下载 # $1 项目名称 # $2 版本号 # $3 zip文件的md5 # $4 项目所有者名称 # $5 zip包文件名前缀 download_from_github(){ if [ $# -eq 5 ] then project_folder="$1-$2" project_package="$project_folder.zip" if need_download $project_package $3 then echo "(下载源码)downloading $1 $2 source" wget --no-check-certificate https://github.com/$4/$1/archive/$5$2.zip -O $project_package exit_on_error fi remove_if_exist $project_folder unzip $project_package exit_on_error else echo invalid argument: echo $* exit -1 fi } download_from_github "protobuf" "3.3.1" "9377e414994fa6165ecb58a41cca3b40" "google" "v" popd
protobuf编译安装
对下载的protobuf源码编译并安装到release/protobuf_linux_x86_64文件夹下build_protobuf.sh
#!/bin/bash GXX_PATH="-DCMAKE_BUILD_TYPE:STRING=RELEASE" INSTALL_FOLDER=$(dirname $(readlink -f $0))/release/protobuf_linux_x86_64 pushd protobuf-3.3.1 echo INSTALL_FOLDER:$INSTALL_FOLDER if [ -d build.gcc ] then rm -fr build.gcc/* else mkdir build.gcc fi pushd build.gcc cmake ../cmake $GXX_PATH -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER -Dprotobuf_BUILD_TESTS=off # 编译并安装protobuf到指定的文件夹 make install popd rm -fr build.gcc popd
上面的脚本中在调用cmake生成Makefile时定义了
protobuf_BUILD_TESTS=off,这是因为protobuf的CMakeLists.txt中默认定义
protobuf_BUILD_TESTS=on,
而当
protobuf_BUILD_TESTS=on时,需要gmock支持(https://github.com/google/googlemock),否则cmake会报如下错误:
CMake Error at tests.cmake:2 (message):
Cannot find gmock directory.
gmock是google公司推出的一款开源的白盒测试工具,对于我们一般的应用来说,不需要gmock提供的功能,所以这里可以将
protobuf_BUILD_TESTS=off,避免麻烦。
相关文章推荐
- LINUX下编译安装PROTOBUF 【UBUNTU10.04+PROTOBUF-2.4.1.TAR.GZ】
- 如何在 Linux 上下载、编译和安装 CMake
- linux下boost编译安装全过程脚本塈bzip2编译安装全过程脚本
- Linux ffmpeg的安装编译过程
- Boost下载安装编译配置使用指南(含Windows和Linux)
- Red Hat Linux 9下的Mysql5.0.19+Apache 2.2.0 + PHP 5.1.2+GD库源码编译安装过程
- Boost下载安装编译配置使用指南(含Windows和Linux)
- arm-linux-gcc 4.3.2编译安装过程
- Boost下载安装编译配置使用指南(含Windows和Linux)
- Boost下载安装编译配置使用指南(含Windows和Linux)
- linux下用cmake编译安装boost1.40
- Boost下载安装编译配置使用指南(含Windows和Linux)
- Linux 下编译并安装配置 Qt 全过程
- 平台移植的各种情况 --- 关于 protobuf的编译、安装,以及开发
- 在Linux环境下编译安装配置PostGIS/PostgreSQL全过程
- Linux源码安装mysql 5.5.13 (cmake编译)
- Linux ffmpeg的安装编译过程
- Boost下载安装编译配置使用指南(含Windows和Linux)
- Boost 下载安装编译配置使用指南(含Windows和Linux)
- Boost下载安装编译配置使用指南(含Windows和Linux)