当前位置 : 主页 > 大数据 > 区块链 >

CMake:如何添加自定义通用编译规则?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我需要将协议缓冲区.proto文件编译为.pb.cc,.pb.h文件.这个转换有一个程序. protoc test.proto --cpp_out . 如何在cmake中添加这样的通用规则?我可以使用add_custom_command执行此操作.但我必须为每个
我需要将协议缓冲区.proto文件编译为.pb.cc,.pb.h文件.这个转换有一个程序.

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文件位于同一目录中.

网友评论