注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

widebright的个人空间

// 编程和生活

 
 
 

日志

 
 

cmake使用protobuf编译器自动生成proto文件对应的源码的例子  

2014-03-19 11:39:37|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
cmake的标准模块支持protobuf的,参考官方文档对于FindProtobuf的说明
http://www.cmake.org/cmake/help/v2.8.12/cmake.html#module:FindProtobuf

webrtc项目里面一个例子

if (${enable_protobuf})
set(PROTOBUF_SRC_ROOT_FOLDER "${webrtc_root}/third_party/protobuf-2.5.0")
#include(FindProtobuf)
find_package(Protobuf REQUIRED)
if (!${PROTOBUF_FOUND})
message (STATUS "找不到protobuf,自己下载源码编译,并修改commoo.cmake文件里面 set\(PROTOBUF_SRC_ROOT_FOLDER 为相应源码目录。")
endif()
message (STATUS "PROTOBUF_INCLUDE_DIRS = ${PROTOBUF_INCLUDE_DIRS}")
message (STATUS "PROTOBUF_LIBRARIES = ${PROTOBUF_LIBRARIES}")
endif()


if (${enable_protobuf})
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS "debug.proto")
add_library(audioproc_debug_proto STATIC ${PROTO_SRCS} ${PROTO_HDRS})
# PROTOBUF_GENERATE_CPP默认生成的文件放在build目录下,
# 复制出来便于其他项目文件引用
add_custom_command(TARGET audioproc_debug_proto POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${PROTO_HDRS} "${CMAKE_CURRENT_SOURCE_DIR}/debug.pb.h")
target_link_libraries(audioproc_debug_proto ${PROTOBUF_LIBRARIES})
target_include_directories(audioproc_debug_proto
PUBLIC "${PROTOBUF_INCLUDE_DIRS}")
target_link_libraries(audio_processing audioproc_debug_proto)
target_compile_definitions(audio_processing PRIVATE "WEBRTC_AUDIOPROC_DEBUG_DUMP")
endif()

PROTOBUF_SRC_ROOT_FOLDER 这个变量先制定自己的protocol的源码目录,Linux安装的官方package可能不需要这么做。
详细自己查看cmake安装目录下的 FindProtobuf 文件的源码。
PROTOBUF_GENERATE_CPP 为proto文件生成调用protobuf编译器自动生成源码的规则,并返回所有的源文件和头文件到第一个第二个参数。用的时候把返回的这两个list 传给add_library 或者其他创建target的命令的源码参数就可以了。

${PROTOBUF_LIBRARIES} ${PROTOBUF_INCLUDE_DIRS} 这两个变量分别是 protobuf需要链接和包含的目录。像上面这样使用就可以了。


  评论这张
 
阅读(1460)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017