CMake动态编译protobuff

原文地址:http://www.funlim.com/showthread.php?tid=10

CMake对protobuff支持不是很好,想要动态编译.proto文件,不是那么容易的。
本文适用CMake3.14.6  protobuf3.9.1  centos7.4
网上搜索,CMake提供如下命令支持PB
1 find_package(Protobuf REQUIRED)
2 protobuf_generate_cpp
CMakeLists.txt中加入,于是各种未定义和找不到的错误。如:
Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)
Unknow CMake command "protobuf_generate_cpp"
然后网上各种支招,有打开兼容性开关什么的,最后发现都没用的,只能自己想尽办法处理,把处理方法记录下来: 
CMake3并不能自动找到Protobuff安装的位置,即使在path和C_INCLUDE_PATH环境变量中配置了也没用。
需要在CMakeLists.txt明确指定路径,依赖于以下2个变量Protobuf_INCLUDE_DIR、Protobuf_LIBRARY:
SET(Protobuf_INCLUDE_DIR /usr/local/protobuf/include/)
SET(Protobuf_LIBRARY /usr/local/protobuf/lib/)
 
但是我的代码是对外开源的,总不能让每个用户都配置一下这个,所以把路径设置到~/.bash_profile
export Protobuf_INCLUDE_DIR=/usr/local/protobuf/include/
export Protobuf_LIBRARY=/usr/local/protobuf/lib/

 CMakeLists.txt中的内容变成:
SET(Protobuf_INCLUDE_DIR $ENV{Protobuf_INCLUDE_DIR})
SET(Protobuf_LIBRARY $ENV{Protobuf_LIBRARY})
find_package(Protobuf REQUIRED)
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ./src/ccc.proto)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值