【发布时间】:2019-05-12 21:02:41
【问题描述】:
刚刚学习如何使用 Meson 并希望为多种语言生成 protobuf 源/标头 - C++、Python、Java、Javascript。使用我的 meson.build 文件中的生成器函数,C++ 非常简单:
project('MesonProtobufExample', 'cpp')
protoc = find_program('protoc', required : true)
deps = dependency('protobuf', required : true)
gen = generator(protoc, \
output : ['@BASENAME@.pb.cc', '@BASENAME@.pb.h'],
arguments : ['--proto_path=@CURRENT_SOURCE_DIR@', '--cpp_out=@BUILD_DIR@', '@INPUT@'])
generated = gen.process('MyExample.proto')
ex = executable('my_example', 'my_example.cpp', generated, dependencies : deps)
这会产生MyExample.pb.cc 和MyExample.pb.h 文件。我认为 Python 会同样简单,但我有点难过,因为我的 Python 脚本没有 executable() 步骤,因为它不需要编译。我注意到介子(结果是 CMake)在调用 executable() 之前实际上不会生成 protobuf 文件,所以我不能跳过这一步,否则不会生成 MyExample_pb2.py 文件。经过几个小时的搜索,我没有找到一起使用 meson/python/GPB 的示例。难道不应该像 CMake 那样有一种简单的方法将生成的源“链接”到 python 文件/模块吗?
protobuf_generate_python(PROTO_PY MyExample.proto)
# This command causes the protobuf python binding to be generated
add_custom_target(my_example.py ALL DEPENDS ${PROTO_PY})
【问题讨论】:
标签: python protocol-buffers meson-build