由来:
一直做c++项目,类的序列化和反序列化一直是一个让人头疼的问题,由于实际操作比较简单枯燥,但c++从语法层面上并不能支持这一行为的自动化,所以看到了protobuf,网上对此评价也很高~~ 毕竟google造的嘛,于是,便进行尝试进行protobuf的编译。
开始
1.下载protobuf源码:
下载地址:https://github.com/google/protobuf/,各位看官可以自行处理。
2.解压后,按照cmake下的README.md进行处理,这里就只以solution进行示例,命令行自动编译类似:
2.1 先打开vs的命令行工具,按照帮助文件,执行如下命令:
mkdir build & cd build
mkdir solution & cd solution
cmake -G “Visual Studio 14 2015 Win64” -DCMAKE_INSTALL_PREFIX=../../../../install ../..
2.2 注意,直接运行cmake会遇到cmake不存在的问题,于是下载cmake安装即可(注意安装后重启命令行),附:https://cmake.org/ cmake官网
2.3 接着执行上面最后一个命令,仍然有问题(好事多磨嘛~)
按照提示打开CMakeError.log,看到提示:无法打开包括文件: “pthread.h”,额,好吧,windows下没有pthread库,下载之~ https://sourceware.org/pthreads-win32/#download,我下载的是 pthreads-w32-2-9-1-release(官网下载可能比较慢,可以选择其中的镜像进行下载)
后面想到当时命令行并没有添加include path的选项,所以即使使用了pthread也不太好配置(后面尝试了多种方式),后面又仔细看了下命令行输出(之前没太注意看命令行输出,只是直接看error文件,额 还是要仔细看看输出的~~),发现cmake终止是由于没有gmock。再看README中写到:
If the gmock directory does not exist, and you do not want to build protobuf unit tests,
you need to add cmake command argument -Dprotobuf_BUILD_TESTS=OFF to disable testing.
好吧,我不用测试,遂在命令行中加入-Dprotobuf_BUILD_TESTS=OFF。OK,居然过了。
2.4 直接通过vs进行编译,全程无报错~ 搞定
2.5 如果不通过vs编译,可以参照帮助,最后通过nmake进行编译~