有没有办法在haxe中获取编译器版本?

Is there a way to get the compiler version in haxe?

我正在尝试使用 haxe 编程语言制作自己的终端。我想知道是否有任何方法可以获得 haxe 编译器版本。我知道您可以在命令提示符下键入 haxe -version 来获取它,但我在代码中需要它。有办法吗?

有一个库可以用来获取编译器版本

https://lib.haxe.org/p/version/

或者只是使用其中的一个宏

class Main {
    static public function main() {
        trace(StaticExtender.getHaxeCompilerVersion());
    }
}

class StaticExtender {
    public static macro function getHaxeCompilerVersion():haxe.macro.Expr {
        var proc_haxe_version = new sys.io.Process('haxe', [ '-version' ] );
        if (proc_haxe_version.exitCode() != 0) {
            throw("`haxe -version` failed: " + proc_haxe_version.stderr.readAll().toString());
        }
#if (haxe_ver >= 4)
        var haxe_ver = proc_haxe_version.stdout.readLine();
#else
        var haxe_ver = proc_haxe_version.stderr.readLine();
#end
        return macro $v{haxe_ver};
    }
}

它也可以作为 compiler define which can be read using macros 使用。 haxe_ver 似乎至少从 3.2 开始可用,您可能需要检查是否需要使用旧的编译器版本。

class Test {
    static function main() {
        trace(getCompilerVersion());
    }

    static macro function getCompilerVersion() {
        return macro $v{haxe.macro.Context.definedValue("haxe_ver")};
    }
}