针对protobuf源码和protoc的编译有很多博客写了,这里就不说了。但是很少看到在clion上配置的,因为这个要写cmake文件,本人是小白,学习了cmake之后才懂怎么搞。出现众多链接错误,这次展示一下有效的配置文件。(protobuf 3.21.6,当前最高版本是26.1我也不知道这个版本是怎么算的,总之3.21.6应该也不算太早吧)
目录结构
- lib: protobuf编译之后的静态链接文件和动态链接文件
- include: 包含了google文件夹,也就是源码src目录下的google文件夹
- bin:指定了输出可执行文件的路径
CMakelists.txt文件内容
- set命令:设置变量,前为变量名,后为变量值
- EXECUTABLE_OUTPUT_PATH:为环境变量,默认为当前文件夹,我这个修改为bin目录了
- include_directories:指示了头文件的位置,这里要指向include,也就是google的上一级目录。第二个include是指定当前文件夹中的.h文件,也就是通过protoc生成的.pb.h文件
- link_directories:指定动态链接的目录为lib
- add_exectuable:将.cpp文件和.pb.c文件输出为可执行文件
- target_link_libraries:将动态链接库libprotobufd连接到可执行文件中
修改.pb.h文件
这个地方搞了好久不知道怎么弄,看到一个大神的文章,但忘记存了。如果不加这个会报链接错误,也就是找不到对应的变量或函数符号。
// addressbook.pb.h文件(我的addressbook.proto生成的文件)
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: addressbook.proto
#define PROTOBUF_USE_DLLS // 加上这句话就行了
编译官网示例
Usage: G:\C++项目\test0\bin\test0.exe ADDRESS_BOOK_FILE
在命令行,给出对应个数的参数就行了。