Просто изучаю, как использовать 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 : ['@[email protected]', '@[email protected]'],
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 нет шага executeable (), поскольку его не нужно компилировать. Я заметил, что meson (и, как оказалось, CMake) на самом деле не генерируют файлы protobuf, пока вы не вызовете исполняемый файл (), поэтому я не могу просто пропустить этот шаг, иначе файл 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})