Просто учитесь использовать Meson и хотите создавать исходные / заголовочные файлы protobuf для нескольких языков - C ++, Python, Java, Javascript.C ++ был достаточно прост с использованием функции генератора в моем файле meson.build
:
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 нет шага execute (), поскольку его не нужно компилировать.Я заметил, что meson (и, как выясняется, CMake) на самом деле не генерируют файлы protobuf, пока вы не вызовете executeable (), поэтому я не могу просто пропустить этот шаг, иначе файл MyExample_pb2.py
не будет сгенерирован.Я не нашел примера для совместного использования meson / python / GPB после нескольких часов поиска.Не должен ли быть простой способ «связать» сгенерированные источники с файлом / модулем Python, как это делает CMake?
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})