(1)Haxe编程语言是什么?

2023-06-12  本文已影响0人  遨游于学海

首先,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目录。

上一篇 下一篇

猜你喜欢

热点阅读