2013-02-04 55 views
7

我需要将协议缓冲区.proto文件编译为.pb.cc,.pb.h文件。这个转换有一个程序。CMake:如何添加自定义通用编译规则?

protoc test.proto --cpp_out . 

如何在cmake中添加这样的通用规则?我可以用add_custom_command来做到这一点。但是我对每个.proto文件都有这个要求。有一个更好的方法吗?

+0

嗨穆罕默德,弗雷泽的回答是正确的,请承认它。 – guinny

回答

6

它看起来像CMake的FindProtobuf模块通过功能PROTOBUF_GENERATE_CPP提供此功能。

您可以在一次调用中传递多个.proto文件,例如,

file(GLOB ProtoFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.proto") 
PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders ${ProtoFiles}) 

注意,即使它调用find_package(Protobuf)的的CMakeLists.txt文件可能是顶层之一,它调用函数的CMakeLists.txt文件(S)将需要在同一目录下。原型文件。

+6

只需展开,$ {ProtoSources}和$ {ProtoHeaders}就是包含 .pb.cc和 .pb.h文件的变量。它们可以直接在add_library()和add_executable()函数中使用。 – psalvaggio

相关问题