我需要将协议缓冲区.proto文件编译为.pb.cc,.pb.h文件。这个转换有一个程序。CMake:如何添加自定义通用编译规则?
protoc test.proto --cpp_out .
如何在cmake中添加这样的通用规则?我可以用add_custom_command来做到这一点。但是我对每个.proto文件都有这个要求。有一个更好的方法吗?
我需要将协议缓冲区.proto文件编译为.pb.cc,.pb.h文件。这个转换有一个程序。CMake:如何添加自定义通用编译规则?
protoc test.proto --cpp_out .
如何在cmake中添加这样的通用规则?我可以用add_custom_command来做到这一点。但是我对每个.proto文件都有这个要求。有一个更好的方法吗?
它看起来像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)将需要在同一目录下。原型文件。
只需展开,$ {ProtoSources}和$ {ProtoHeaders}就是包含
嗨穆罕默德,弗雷泽的回答是正确的,请承认它。 – guinny