2016-06-21 138 views
2

我试图用一种语言编写源代码,并将其转换为本地C++和JS源代码。理想情况下,转换后的数据源应该是人类可读的,并尽可能地类似于原始数据源。我希望哈克斯能为我解决这个问题。所以我用haxescript编码并将其转换为相应的C++和JS源代码。然而,我发现haxe的例子似乎为您创建了最终的应用程序。所以使用C++时,它将使用msbuild(或者它找到的任何编译器)并从生成的C++代码为您创建最终的exe文件。 haxe是否也会创建C++和JS源代码供您查看,还是全部在内部完成以使其无法访问?如果它是可访问的,那么是否有可能删除haxe的构建面,以便仅创建源代码并停止?Haxe编译为C++和JS源代码

感谢

回答

4

当您生成CPP所有的中间文件生成和保存,无论你决定来生成输出文件(使用-cpp pathToOutput给出的路径)。您获得可执行文件的事实可能是因为您正在使用-main开关。这意味着您的应用程序的入口点,但这并不是必需的,您可以传递给命令行一些您希望在输出中构建的类型。

对于JS来说,它非常类似,只生成一个JS文件,并且只有在使用-main时才有入口点。

至于其他的话题,贵HAXE代码类似于生成的代码的答案是肯定的,但是......一些类型(如EnumAbstract)只有在HAXE存在,因此就会产生代码,功能的作品,但它可能看起来完全不同。另外Haxe有一个永远在线的优化器/分析器,它可能会以意想不到的方式让你的代码变得麻木(分析器可以被禁用)。我仍然发现从生成的代码中找出Haxe源并不困难。 JS支持源映射,这对于调试非常有用。所以最后,Haxe没有做任何事情来混淆你生成的代码,但也没有做太多的努力来保护它太严格。

+1

谢谢你这样详细的答案。这听起来像我所需要的。如果我使用多个haxe文件,它会将它合并为一个C++和一个JS源文件,还是会得到多个C++文件和多个类似于原始多个haxe文件布局的JS文件? – codetemplar

+1

C++生成很多文件(我相信每个类型+标题+构建文件),JS总是只生成一个文件,它将结合所有类型。 –

+1

@codetemplar - 您应该注意CPP输出不是简单的源输出。它基于hxcpp库提供的运行时框架,与JS输出依赖于JavaScript运行时(由浏览器提供)完全相同。因此,它构建可执行文件(包括运行时),因为这是大多数人想要 - 中间源格式只有勉强有用。 –