首先,Haxe是一种编程语言,它可以将代码编译为很多语言,比如说C++、JS、PHP等。Haxe代码的后缀名一般是.hx
。在官网上下载之后安装就会有两个主要的程序:haxe用来编译Haxe代码,haxelib是Haxe的包管理工具。另外Haxe还可以以解释方式运行,例如
haxe --run Main.hx
就可以运行Main.hx
。
还有一个推荐工具,当然这个是可选的,需要额外安装,叫做HashLink,它是一个Haxe虚拟机,可以运行Haxe字节码,使用haxe --hl out.hl
可以生成Haxe字节码。
要将Haxe代码编译到相应的语言,就需要安装相应的包。
例如,要编译到C++,就要
haxelib install hxcpp
要编译到NodeJS,就要
haxelib install hxnodejs
Haxe入门
首先,Haxe是面向对象的,类名必须和文件名相同,这里我们就取名叫做Main.hx
了,当然也可以取其它名字,只要类名和文件名相同即可。
在该文件中写入
class Main{
static function main(){
Sys.println("Hello,123");
}
}
然后再运行
haxe --run Main.hx
这样就可以以解释的方式运行上述代码。
接着,我们来看代码,
首先定义了一个叫做Main
的类,里面有个main()
函数,显然这是Haxe程序的入口。所有的Haxe程序都从这个函数开始运行。
在主函数里面,很明显是调用了输出函数,这个输出函数是在Sys
里面的。
这个Sys
是在标准库中的一部分,标准库中还有很多其它的。
在Haxe中,标准库大概可以分为三类,一类是Haxe,可以在所有导出目标(要编译为的语言)中可用,一类是Sys,仅能在能够和操作系统交互的导出目标中可用,意思就是说导出为浏览器js时不能用,但其它的可以用,当然导出为NodeJS也是可以用;还有一类是仅能在特定语言使用的,可以通过宏之类的来判断当前编译的导出目标语言。
编译
如果要编译为C++,可以这么写
haxe --main Main.hx --cpp ./cpp
上面的--main
指定主类,--cpp
指定编译为C++并输出到cpp
目录中。然后再cpp
目录中,我们看到生成了可以运行的程序。
编译为HashLink字节码:
haxe --main Main.hx --hl out.hl
前面是一样的指定主类,后面就是使用--hl
参数指定生成为HashLink字节码,一般而言HashLink字节码的后缀名是.hl
。
通过HashLink程序(也就是解压后目录中的hl
),就可以运行HashLink字节码了:
hl out.hl
关于HashLink的一些说明
HashLink支持两种模式,一种是编译为HashLink字节码(称之为HashLink/JIT),这种方式编译比较快,但运行比较慢,还有一种是编译为C(称之为HashLink/C),这种方式编译比较慢,但运行比较快,所以根据官方文档所述,前面一种模式适合开发用,后面一种比较适合用于生成最终的程序。
生成HashLink/C需要额外安装hashlink
库,代码如下:
haxelib git hashlink https://github.com/HaxeFoundation/hashlink.git master other/haxelib/
虽然也可以通过
haxelib install hashlink
来安装,但这样安装的版本可能比较旧,因此推荐上面那种方式。
生成C代码:
haxe --main Main --hl ./cpp/main.c
这样就会在cpp目录中生成C,当然最终需要自己编译C代码。
另外可以通过类似这样的方式生成Visual Studio解决方案文件:
haxe --main Main --hl ./cpp/main.c -D hlgen.makefile=vs2017
Visual Studio Code 相关
在Visual Studio Code 扩展市场中,有Haxe的语法提示等插件,非常方便,还有HashLink调试器,方便使用VSC和HashLink等来进行调试。
构建脚本
构建脚本以.hxml
作为后缀名,里面可以写编译时需要的各种参数,这样就没必要每次都写一遍了,然后运行:
haxe xxx.hxml
就可以根据该构建脚本编译了。
hxml文件样例:
--main Main.hx
--lib hxcpp
--cpp ./cpp
上面就是说主类是Main
,需要用到hxcpp
库,生成为C++,放到cpp
目录。
网友评论