编译环境: win10 x64 编译器 :mingw32 cmake 使用场景: Qt4.8.7
下载 protobuf 最新的代码: https://github.com/google/protobuf
点击 configure
使用默认的 mingw32 即可, 前提是把 mingw32/bin 加到环境变量 Path 里面.
然后, 发现出错了 gmock 没有 , 可以直接勾选取消 gmock 也可以 GitHub 自己下载 mock 补充到源码 (我这直接不生成测试了)
然后在自己指定的文件夹中生成了如下文件
开始编译 (mingw32-make ) 是 mingw32/bin 下的 exe (此目录已在环境变量 Path 中了) 等待完成即可.
成果就是它了
用 .\protoc.exe --proto_path=SRC --cpp_out=DST SRC/test.proto 生成文件 (自己建立 src 和 dst 文件夹 test.proto 放到 src 文件下)
- // 指定语法规则
- syntax = "proto3";
- message Book
- {
- string name = 1;
- int32 pages = 2;
- float price = 3;
- }
- message Student
- {
- int32 age = 1;
- string name = 2;
- float score = 3;
- repeated Book arrBook = 4;
- }
生成 test.pb.h 和 test.pb.cc 建立一个 Qt 项目测试一下吧
- void MainWindow::on_pushButton_clicked()
- {
- //GOOGLE_PROTOBUF_VERIFY_VERSION;
- Book book;
- Book book2;
- book.set_name("哈哈 shishi");
- book.set_pages(32);
- book.set_price(2.63);
- //qDebug()<<book.IsInitialized();
- string str ;
- book.SerializePartialToString(&str);
- book2.ParseFromString(str);
- qDebug()<<QString::fromUtf8(book2.name().c_str())<< ""<<book2.price()<<" "<<book2.pages();
- }
包含生成的头文件
- #include "test.pb.h"
- #include <QDebug>
- #include <iostream>
- using namespace std;
配置一下 头文件和库文件
最后就是结果了, 收工.
来源: http://www.bubuko.com/infodetail-2915320.html