【问题标题】:HaxeDevelop: cross-platform compilation via default project templatesHaxeDevelop:通过默认项目模板进行跨平台编译
【发布时间】:2017-09-07 06:50:27
【问题描述】:

尝试研究如何通过 HaxeDevelop 在不同语言上创建“Hello world”。我是新手,可能对术语不准确。

1) C# 项目。按 F8 给我错误:

haxe -cp src -cs D:/Programs/Projects/CsTestHaxe/bin/ -main Main
Unix.Unix_error(8, "mkdir", "D:/Programs/Projects/CsTestHaxe/bin/")
构建因错误而停止 (haxe.exe)。

通过谷歌搜索几乎过时的信息至少找到了解决方案:

haxe -main Main -cs out

它可以工作,但输出到“src”位置,这很糟糕。下一次谷歌搜索将我引导至“自定义构建”并在项目设置中使用带有预构建命令的 .hxml。
但是为什么默认模板/设置不适用于 "Hello world"(使用 cs.system.Console)这样简单的事情?
如何修复默认构建/可能我已经通过 HaxeDevelop 安装安装或设置了错误?

2) C++ 项目。按 F8 给我错误:

警告:找不到 Visual Studio 的环境变量
缺少 HXCPP_VARS
错误:无法自动设置 MSVC
错误:构建失败
构建因错误而停止 (haxe.exe)。

使用命令行(类似于上面的 C#)我可以执行 C++ 源代码,但不能编译它。
已安装 Visual Studio Community 2017。没有任何改变,同样的错误。 VS 提供不同的自己的安装部件。我应该安装任何特定的吗?
还发现了许多关于 C++ 编译的 OpenFL 解决方法的线程。但我不需要 OpenFL,我想使用默认的 Haxe API 和工具。
Lime 也经常提到 OpenFL 和 C++。我也需要吗?通过命令行安装石灰。但似乎没有任何改变。

3) 我说 HaxeDevelop 还不支持 HashLink 对吗?
如果可能的话,如果有 Neko 隶属于 Haxe,为什么会出现 HashLink


因此,这里有一个额外的问题:Haxe 在编译到目标平台期间是否只将 .hx 源“转换”为目标,然后使用第三方(目标平台)编译?

【问题讨论】:

    标签: cross-platform haxe flashdevelop


    【解决方案1】:

    1) C# 项目。按 F8 会出错。

    这似乎是a known Haxe issue。由于它是been fixed on the dev branch,您可以尝试从build.haxe.org 进行夜间构建。或者,您也可以尝试手动创建 bin 目录,因为这似乎是错误所在。

    2) C++ 项目。按 F8 给我错误:

    最新的 Haxelib 版本的 hxcpp (3.4.64) 尚不支持 Visual Studio 2017。您可以通过从 GitHub 安装 hxcpp 来使用开发版本,因为它再次should be fixed there

    haxelib git hxcpp https://github.com/HaxeFoundation/hxcpp
    

    替代方法是降级 Visual Studio。

    还有 OpenFL 和 C++ 总是与 Lime 一起提到。我也需要吗?

    是的,如果你想使用 OpenFL,你还需要 Lime,因为 OpenFL 依赖于它。

    3) HaxeDevelop 还不支持 HashLink 对吗?

    其实是一个HashLink项目模板was added。但是为了遵循这个答案的一般主题,它似乎还没有成为正式版本。您可以从 here 获取每晚构建。

    如果可能的话,如果有 Neko 与 Haxe 有关联,为什么会出现 HashLink?

    HashLink 的作者在 haxe.org 上有一个由两部分组成的博客系列:part 1part 2。第一部分有一段谈论这个确切的话题。摘录如下:

    首先,让我解释一下为什么要写另一个虚拟机来代替Neko。

    [...]

    当时,Neko 虚拟机并不是专门为运行 Haxe 而设计的,并且受到一些限制,主要是性能。

    [...]

    最后一个问题:

    Haxe 在编译到目标平台的过程中是否只将 .hx 源“转换”为目标,然后使用第三方(目标平台)编译?

    对于某些目标来说确实如此,但这取决于情况。对于 C++、C# 和 Java,Haxe 确实会为目标语言生成源代码,然后在自己编译后调用目标原生编译器(这一步通常称为“原生编译”)。

    但是,有些目标直接生成字节码(SWF 和 Neko),因此那里没有原生编译步骤。其他目标语言是interpreted(JS、PHP、Python 和 Lua),因此那里也没有本地编译步骤。对于 HL 它实际上取决于,有 HL/Jit(字节码)和 HL/C,后者被编译为原生 C 代码。

    您可以找到完整的 Haxe 目标列表及其特征here

    唷,这是一大堆问题。 ;)

    【讨论】:

    • 非常感谢您的帮助!使用最新的夜间构建的 c# 工作正常,但使用 c++ 时存在问题。我已经使用 git haxe build 下载并运行项目。它显示:This version of hxcpp (D:\Programs\HaxeDevelop\HaxeToolkit\haxe\lib\hxcpp\git/) appears to be a source/developement version. Before this can be used, you need to: 1. Rebuild the main command-line tool, this can be done with: cd tools/hxcpp haxe compile.hxml
    • 我已经在 git build path 的命令行中运行了这个。并且只是在编译时遇到了先前的错误:Error: Could not automatically setup MSVC (etc)。我想在这种情况下需要等待带有修复的发布版本吗? 还有一个简单的 haxe API 问题。对于HashLink我可以使用Enum而不是hl.Enum是对的,但最后一个只有HashLink的更多功能?
    • 您是否按照说明重新构建了 hxcpp 命令行工具? hl.Enum 似乎是内部的东西,不应该出现在 API 文档中。
    • 抱歉,我计划提供更多信息,但对剪切评论格式感到沮丧。我已经用“|”运行了.bat线路:cd D:\Programs\HaxeDevelop\HaxeToolkit\haxe\lib\hxcpp\git\tools\hxcpp | d: | haxe compile.hxml
    • 也许这个未合并的 PR 也需要让 VS 2017 工作,对于某些人来说似乎是这样:github.com/HaxeFoundation/hxcpp/pull/624
    猜你喜欢
    • 2014-04-07
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2014-09-28
    • 2013-04-08
    • 2012-03-19
    • 1970-01-01
    相关资源
    最近更新 更多