使用--run和--macro include解析和实例化非导入的包

时间:2017-03-22 08:27:01

标签: macros haxe

我一直在使用--run命令,并且一直试图包含一些软件包 在运行它时,使用--macro包含如下:

haxe -lib nape --macro include('nape.geom.Vec2') --run Main 'nape.geom.Vec2'

然后使用Type.resolve,所以我可以使用Type.createInstance实例化它们,如下所示:

class Main 
{
  static function main() 
  {
    trace("hello", Sys.args());
    var c = Type.resolveClass(StringTools.replace(Sys.args()[0], "'", ""));
    trace(c);
    Type.createInstance(c, []);
  }
}

我也尝试过使用--interp这个命令:

haxe -lib nape --macro include('nape.geom.Vec2') -main Main --interp -D nape.geom.Vec2

他们运行,跟踪和接收Sys.args正如预期的那样--run(通过一个小的代码更改来容纳' -d nape.geom.Vec2' for interp),但是resolveClass总是如此返回null,所以我不能将它传递给creatInstance而没有错误。

我使用的是haxe 3.4.2 stable

我做错了什么?这可以使用--run命令或--interp命令吗?

我真的非常喜欢其中一些功能的更完整的文档

2 个答案:

答案 0 :(得分:1)

'include'宏包含一个包,而不是一个类。

适用于:

haxe -lib nape --macro include('nape.geom') --run Main 'nape.geom.Vec2'

请参阅http://api.haxe.org/haxe/macro/Compiler.html#include

答案 1 :(得分:0)

好吧,所以我通过链接所需的各个类并禁用无效代码消除(如乔纳斯·马拉科(Jonas Malaco)的建议)来使其正常工作

使用原始文章中的代码以及此构建命令:

haxe -lib nape nape.geom.Vec2 -dce no --run Main 'nape.geom.Vec2'