生成一个3.6.1
的C++
版本protobuf
静态库
在github
上找到protobuf
找了好久,没有找到对应的方法,不过阅读能力强的,可以./configure help
把每个配置选项研究下。我找到一个现成的执行命令,不过被墙了,我就搬运解释下。
当前目录下就有这个脚本
./autogen.sh 复制代码
build_dir=`pwd`/../libprotobuf/ios darwin=darwin`uname -r` protoc=`which protoc` isysroot=`xcrun --sdk iphoneos --show-sdk-path` cflags="-Wno-unused-local-typedef -Wno-unused-function -DNDEBUG -g -O0 -pipe -fPIC -fcxx-exceptions" cxxflags="$cflags -std=c++11 -stdlib=libc++" 复制代码
libprotobuf/ios/arch
、libprotobuf/ios/lib
mkdir -p $build_dir/arch mkdir -p $build_dir/lib 复制代码
./configure \ --build=x86_64-apple-$darwin \ --host=arm \ --with-protoc=$protoc \ --disable-shared \ --prefix=$build_dir \ --exec-prefix=$build_dir/arch/arm64 \ "CC=clang" \ "CFLAGS=$cflags -miphoneos-version-min=8.0 -arch arm64 -isysroot $isysroot" \ "CXX=clang" \ "CXXFLAGS=$cxxflags -miphoneos-version-min=8.0 -arch arm64 -isysroot $isysroot" \ LDFLAGS="-arch arm64 -miphoneos-version-min=8.0 -stdlib=libc++" \ "LIBS=-lc++ -lc++abi" 复制代码
make -j8 make install 复制代码
make distclean 复制代码
./configure \ --build=x86_64-apple-$darwin \ --host=armv7-apple-$darwin \ --with-protoc=$protoc \ --disable-shared \ --prefix=$build_dir \ --exec-prefix=$build_dir/arch/armv7 \ "CC=clang" \ "CFLAGS=$cflags -miphoneos-version-min=8.0 -arch armv7 -isysroot $isysroot" \ "CXX=clang" \ "CXXFLAGS=$cxxflags -miphoneos-version-min=8.0 -arch armv7 -isysroot $isysroot" \ LDFLAGS="-arch armv7 -miphoneos-version-min=8.0 -stdlib=libc++" \ "LIBS=-lc++ -lc++abi" 复制代码
make -j8 make install 复制代码
lipo \ $build_dir/arch/arm64/lib/libprotobuf-lite.a \ $build_dir/arch/armv7/lib/libprotobuf-lite.a \ -create \ -output $build_dir/lib/libprotobuf-lite.a 复制代码
rm -rf $build_dir/arch 复制代码
proto ├── cardboard_device.pb.cc ├── cardboard_device.pb.h └── libprotobuf └── ios ├── include │ └── google/* └── lib └── libprotobuf-lite.a 复制代码
把lib
、include
拖到工程中,指定搜索目录就可以使用了。