宏项目 - 宏在自己的配置

时间:2014-06-30 21:54:34

标签: scala macros sbt scala-macros

关于Macro Projects的SBT文档从以下内容开始:

  

编译器中的当前宏实现要求在使用宏实现之前对其进行编译。解决方案通常是将宏放在子项目中或放在自己的配置中。

将宏“置于自己的配置中”究竟意味着什么?这是否意味着将宏源放在子项目中的替代方案?如果是这样,那替代方案会是什么?我正在寻找一个选项,我不必将宏源与调用分开,主要是因为我不想要另一个子代码用于公共代码。

2 个答案:

答案 0 :(得分:1)

我相信作者提到了Configuration scop。简而言之:您已经知道不同的源可以驻留在src/main/scalasrc/test/scala下,而测试配置中的代码可以使用来自 compile(main)的代码构造。那么为什么不进行自定义配置,例如,其来源可以位于src/macro/scala

这个问题有great answer,我建议你看看。 另外,您可以找到有用的示例here。这是定义测试新配置的解释。但你可以根据自己的需要利用它。

答案 1 :(得分:0)

我不知道作者对自己的配置的含义。

另一种方法是使用SBT在编译之前生成源( c.f。 sourceGenerators)的能力。 "产生"实际上允许例如从其他地方复制宏源文件。

然而,这令人费解,所以我建议在子项目中分离宏。此外,即使您切换到不支持SBT的IDE(然后您有一个宏定义项目和一个宏使用项目),分离宏仍然允许您构建。