生成一個3.6.1
的C++
版本protobuf
靜態庫ios
在github
上找到protobufc++
找了很久,沒有找到對應的方法,不過閱讀能力強的,能夠./configure help
把每一個配置選項研究下。我找到一個現成的執行命令,不過被牆了,我就搬運解釋下。git
當前目錄下就有這個腳本github
./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
拖到工程中,指定搜索目錄就可使用了。shell