在Haxe编译期间访问编译日期

qua*_*ant 8 macros haxe

我想知道是否可以访问外部信息 - 比如编译期间的当前日期.

然后可以做这样的事情:

class MyInfo {
    private var buildDate:Int = --- AUTOMATICALLY INSERT THE CURRENT UNIX DATE TIME HERE ---;

    public function getInfo():String { // example usage
        return "This library was compiled the " + buildDate;
    }
}
Run Code Online (Sandbox Code Playgroud)

我考虑在编译bat/sh/make文件中访问此信息,然后将其传递给编译器.(类似于"-D"的东西.)但是,Haxe编译器似乎不支持如下参数:

haxe --main MyInfo --js test.js -SOMEARG date=$(date)
Run Code Online (Sandbox Code Playgroud)

这样我以后就可以使用变量日期的内容......

kLa*_*abz 10

这可以通过宏(在编译时执行的代码)来完成.

您的日期示例将在此处的食谱中介绍.您可以在haxe手册cookbook中找到有关宏的更多信息.

编辑:最小的例子:

class Test {
  public static function main() {
    trace(getBuildTime());
  }

  public static macro function getBuildTime() {
    var buildTime = Math.floor(Date.now().getTime() / 1000);

    return macro $v{buildTime};
  }
}
Run Code Online (Sandbox Code Playgroud)

时间将在编译时计算.