2016-06-21 2 views
2

Я пытаюсь написать исходный код на одном языке и преобразовать его в исходный C++ и JS-источник. В идеале конвертированный источник должен быть читаемым человеком и как можно лучше напоминать исходный источник. Я надеялся, что он сможет решить эту проблему для меня. Поэтому я кодирую в haxescript и преобразовываю его в соответствующий C++ и JS-источник. Однако примеры, которые я нахожу в haxe, кажется, создают для вас окончательное приложение. Таким образом, с C++ он будет использовать msbuild (или любой другой компилятор, который он находит), и создает для вас окончательный exe из сгенерированного кода на C++. Создает ли haxe исходный код C++ и JS для просмотра или все это делается внутренне для haxe и недоступно? Если он доступен, можно ли удалить сторону здания haxe, чтобы он просто создавал исходный код и останавливался?Haxe компиляция на C++ и источник JS

Благодаря

ответ

4

При создании CPP все промежуточные файлы генерируются и хранятся там, где вы решили сформировать свой вывод (путь заданный с помощью -cpp pathToOutput). Тот факт, что вы получаете исполняемый файл, вероятно, потому, что вы используете переключатель -main. Это подразумевает точку входа в ваше приложение, но это действительно не требуется, и вы можете просто передать в командной строке кучу типов, которые вы хотите создать в своем выпуске.

Для JS это очень похоже, создается один JS-файл и он имеет только точку входа, если вы использовали -main.

Что касается другой темы, делает ваш код Haxe напоминает сгенерированный код ответ да, но ... некоторые из типов (например, Enum и Abstract) существуют только в Haxe так что они будут генерировать код, который функционально работает, но это может выглядеть совсем по-другому. Кроме того, у Haxe есть оптимизатор/анализатор, который может непредсказуемо разгладить ваш код (анализатор можно отключить). Я все еще нахожу, что не так сложно определить источник Haxe из сгенерированного кода. JS поддерживает сопоставление источников, что действительно полезно для отладки. Поэтому, в конце концов, Haxe не делает ничего, чтобы запутать ваш сгенерированный код, но также не делает много, чтобы попытаться сохранить его слишком строго.

+1

Благодарим вас за такой подробный ответ. Это похоже на то, что мне нужно. Если я использую несколько файлов haxe, он объединит их в один C++ и один исходный JS-файл или я получу несколько файлов C++ и несколько JS-файлов, которые напоминают макет оригинального многократного haxe-файла? – codetemplar

+1

C++ генерирует много файлов (я считаю, что один из них имеет тип + заголовки + файлы сборки), JS всегда генерирует только один файл, который будет объединять все ваши типы. –

+1

@codetemplar - вы должны заметить, что выход CPP не является простым источником. Он построен на основе среды выполнения, предоставляемой библиотекой hxcpp, в значительной степени аналогично тому, как вывод JS зависит от времени выполнения javascript (предоставляется браузером.) Таким образом, он создает исполняемый файл (который включает в себя время выполнения), потому что это то, что большинство людей будет want - формат промежуточного источника является лишь незначительно полезным. –