【问题标题】:Haxe compiling to C++ and JS sourceHaxe 编译为 C++ 和 JS 源
【发布时间】:2016-06-22 06:30:43
【问题描述】:

我正在尝试用一种语言编写源代码并将其转换为本地 c++ 和 JS 源代码。理想情况下,转换后的源代码应该是人类可读的,并且尽可能与原始源代码相似。我希望haxe可以为我解决这个问题。所以我在 haxescript 中编写代码并将其转换为相应的 C++ 和 JS 源代码。但是,我找到的 haxe 示例似乎为您创建了最终应用程序。因此,对于 C++,它将使用 msbuild(或它找到的任何编译器)并从生成的 C++ 代码为您创建最终的 exe。 haxe 是否还创建了 c++ 和 JS 源代码供您查看,还是全部在 haxe 内部完成且无法访问?如果可以访问,那么是否可以删除 haxe 的构建部分,以便它简单地创建源代码并停止?

谢谢

【问题讨论】:

    标签: haxe


    【解决方案1】:

    当您生成 CPP 时,所有中间文件都会生成并保存在您决定生成输出的任何位置(使用-cpp pathToOutput 给出的路径)。您获得可执行文件的事实可能是因为您使用了-main 开关。这意味着您的应用程序有一个入口点,但这并不是真正需要的,您只需将一堆您想在输出中构建的类型传递给命令行。

    对于 JS 来说非常相似,生成一个单独的 JS 文件,如果你使用了-main,它只有一个入口点。

    关于另一个主题,您的 Haxe 代码是否类似于生成的代码,答案是肯定的,但是......某些类型(如 EnumAbstract)仅存在于 Haxe 中,因此它们将生成功能上的代码工作,但它可能看起来完全不同。此外,Haxe 有一个永远在线的优化器/分析器,它可能会以意想不到的方式混淆你的代码(可以禁用分析器)。我仍然发现从生成的代码中找出 Haxe 源并不难。 JS 支持源映射,这对于调试非常有用。所以最后,Haxe 没有做任何事情来混淆你生成的代码,但也没有做太多的事情来尝试过于严格地保留它。

    【讨论】:

    • 感谢您提供如此详细的答复。这听起来正是我所需要的。如果我使用多个 haxe 文件,它会将其合并为一个 c++ 和一个 JS 源文件,还是会得到多个 c++ 文件和多个类似于原始多个 haxe 文件布局的 JS 文件?
    • C++ 会生成很多文件(我相信每个类型一个 + 头文件 + 构建文件),JS 总是只生成一个文件来组合你的所有类型。
    • @codetemplar - 您应该注意 CPP 输出不是简单的源输出。它建立在 hxcpp 库提供的运行时框架之上,就像 JS 输出依赖于 javascript 运行时(由浏览器提供)一样。所以它构建可执行文件(包括运行时),因为这是大多数人会做的want -- 中间源格式只有一点点有用。
    • 所以我无法获取生成的 cpp 文件并将其原样包含在不同的 C++ Visual Studio 项目中并期望它能够以最小的努力构建?
    • @FrancoPonticelli,如何将 O1 O2 O3 等编译器优化应用于生成的 CPP 代码?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多