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代碼文件,但後者不能設定輸出目錄,不方便。