HaxeDevelop:通过默认项目模板进行跨平台编译

HaxeDevelop: cross-platform compilation via default project templates

尝试研究如何通过 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/")
Build halted with errors (haxe.exe).

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

haxe -main Main -cs out

它有效,但输出到 "src" 位置,这是错误的。接下来的谷歌搜索让我找到 "Custom build" 并在项目设置中使用 .hxml 和预构建命令。
但是为什么默认 template/settings 不适用于像 "Hello world" 这样简单的东西(使用 cs.system.Console)?
如何修复默认构建/可能我通过 HaxeDevelop 安装安装或设置了错误?

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

Warning: Could not find environment variables for Visual Studio
Missing HXCPP_VARS
Error: Could not automatically setup MSVC
Error: Build failed
Build halted with errors (haxe.exe).

使用命令行(类似于上面的 C#)我可以执行 C++ 源代码,但无法编译它。
已安装 Visual Studio 社区 2017。什么都没有改变,同样的错误。 VS 提供不同的自己的安装部分。我应该安装任何特定的吗?
还发现许多关于 OpenFL C++ 编译解决方法的线程。但我不需要 OpenFL,而是想使用默认的 Haxe API 和工具。
此外,OpenFL 和 C++ 总是与 Lime 一起提及。我也需要吗?通过命令行安装 Lime。不过好像没什么变化。

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


因此这里有一个额外的问题:Haxe 在编译期间仅针对目标平台 "convert" .hx 源代码到目标平台然后使用第三方(目标平台)编译是否正确?

1) C# project. Pressing F8 gives me error.

这似乎是 a known Haxe issue. Since it's been fixed on the dev branch, you could try a nightly build from build.haxe.org。或者,您也可以尝试手动创建 bin 目录,因为这似乎是错误所在。

2) C++ project. Pressing F8 gives me error:

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

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

备选方案是降级 Visual Studio。

Also OpenFL and C++ always mentioned with Lime. Do I need it too?

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

3) Am I right that HaxeDevelop not yet support HashLink?

实际上,一个HashLink项目模板was added. But to follow the general theme of this answer, it seems it hasn't made it into an official relase yet. You can get a nightly build from here

And if possible couple words about why HashLink appeared if there is Neko affilated with Haxe?

HashLink 的作者 part 1, part 2 在 haxe.org 上有一个分为两部分的博客系列。第一部分有一段讨论这个确切的话题。以下是摘录:

First, let me explain the reasons for writing another virtual machine in replacement of Neko.

[...]

Back then, the Neko virtual machine was not especially designed to run Haxe and suffered from some limitations, the main one being performance.

[...]

最后一个问题:

is it right that Haxe during compilation to target platform only "convert" .hx source to target one and then using third party (target platform) compile?

对于某些目标来说确实如此,但这要视情况而定。对于C++、C#和Java,Haxe确实会为目标语言生成源代码,然后在自己编译后调用目标本地编译器(这一步通常称为"native compilation")。

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

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

呸,这是一个很多问题。 ;)