protobuf 提供了自动生成文件的功能,我直接看的cmake文件,里面没说函数说明,我没有全部弄明白,但可以正常使用:
add_library(myTarget
${src}
)
protobuf_generate(
TARGET myTarget // 这个必须有,否则提示错误
LANGUAGE cpp // 此行可选,默认cpp
OUT_VAR PROTO_SRCS // 此行可选,因为生成的代码已经添加到target里
PROTOC_OUT_DIR ${CMAKE_CURRENT_SOURCE_DIR} // 这行很重要,windows下有时要添加dll_export.h文件
EXPORT_MACRO ECIO_PB_Exports // windows下设定dll_export
${PROTO_FILES} // *.proto 文件
)
target_link_libraries(myTarget
${Protobuf_LIBRARIES})
这里要说明下:
PROTOBUF_GENERATE
使用时,.proto文件要在当前目录下,换句话说,.proto文件和add_library
或add_executable
,在同一个目录,否则会出错- protobuf 提供了
PROTOBUF_GENERATE
和PROTOBUF_GENERATE_CPP
两个宏,都能用来生成cpp代码文件,但后者不能设定输出目录,不方便。