我需要将协议缓冲区.proto文件编译为.pb.cc,.pb.h文件.这个转换有一个程序. protoc test.proto --cpp_out . 如何在cmake中添加这样的通用规则?我可以使用add_custom_command执行此操作.但我必须为每个
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文件也需要与.proto文件位于同一目录中.