Я заинтересован в создании заголовка C ++ с использованием инструмента генерации кода Apache Avro (т.е. скрипта python). Согласно документации это должно быть довольно легко сделать, но я обычно не использую python, поэтому для меня все выглядит немного странно.
Состояние инструкции:
Генерирование кода выполняется в два этапа:
precompile < imaginary > imaginary.flat
На этапе предварительной компиляции схема преобразуется в промежуточный формат, который используется генератором кода.Этот промежуточный файл является просто текстовым представлением схемы, сглаженным путём первого-глубинного обхода древовидной структуры типов схем.
python scripts/gen-cppcode.py --input=example.flat --output=example.hh –-namespace=Math
Это говорит генератору кода прочитать вашу сглаженную схемув качестве входных данных и сгенерировать заголовочный файл C ++ в example.hh.Необязательный аргумент namespace поместит объекты в это пространство имен ...
Моя проблема (нет, я не могу обратиться к врачу или использовать крем для него):
Я неувидеть все, что подробно объясняет, как прекомпилировать.Документация создает впечатление, что если я просто наберу «precompile» в командной строке и предоставлю аргументы командной строки, то все будет работать волшебным образом, но precompile не является допустимой командой Windows. Так, как правильно прекомпилировать в Windows? Если кто-нибудь знает, как это сделать, ПОЖАЛУЙСТА, дайте мне знать!
Я также попытался запустить gen-cppcode.py сценарий, но он получает сообщение об ошибке в строке 316 (что, я подозреваю, может происходить из-за того, что я не скомпилировал схему):
def doEnum(args):
structDef = enumTemplate;
typename = args[1]
structDef = structDef.replace('$name$', typename)
end = False
symbols = '';
firstsymbol = '';
while not end:
line = getNextLine()
if line[0] == 'end': end = True
elif line[0] == 'name':
if symbols== '' :
firstsymbol = line[1]
else :
symbols += ', '
symbols += line[1]
else: print "error" // <-- Syntax Error: invalid syntax
structDef = structDef.replace('$enumsymbols$', symbols);
structDef = structDef.replace('$firstsymbol$', firstsymbol);
addStruct(typename, structDef)
return (typename,typename)