在一个Scala项目中可以有单独的编译单元吗?

时间:2016-04-30 18:35:59

标签: scala sbt scala-macros

我目前正在尝试掌握Scala中宏的概念。宏不能在定义它们的编译单元中使用。

要解决这个问题,我在@adamw示例中就像this那样做了,即我使用sbt来创建一个包含两个子项目的项目 - 一个包含宏,另一个包含使用宏的示例。

然而,虽然这有效,但我觉得这不是一个干净的方法。毕竟,不应该将宏作为逻辑上属于他们所属项目的一部分吗?因此,是否可以使用宏?定义以及使用它们的代码位于同一个项目中,同时在一个sbt项目中设置单独的编译单元?

非常感谢你!

1 个答案:

答案 0 :(得分:2)

已经讨论过使用Macro配置范围来添加额外的macro:compile任务。

这样您就可以将宏来源放入src/macro/scala,并使macro:compile成为compile的依赖关系。

使用这样的配置范围,您可以在同一个项目中拥有宏和常规源。但是,这不是sbt中的默认设置,而是您必须自己添加的内容。我忘记了所需的确切咒语。