2016-04-30 11 views
1

私は現在、Scalaでマクロの概念を理解しようとしています。マクロは、定義されたコンパイル単位で使用することはできません。1つのScalaプロジェクト内に別々のコンパイル単位を入れることはできますか?

@adamwたとえばthisの例では、私はsbtを使って2つのサブプロジェクトを含むプロジェクトを作成しました.1つはマクロを含み、もう1つはマクロを使用する例を含んでいます。

しかし、これは機能しますが、私はそれがきれいなアプローチではないように感じます。結局のところ、マクロは論理的に属するプロジェクトの一部ではないはずですか?そのため、マクロの定義だけでなく、同じプロジェクトに配置されたマクロの定義を使用することは可能ですか?その1つのsbtプロジェクト内に別々のコンパイル単位を設定していますか?

ありがとうございます!

答えて

2

Macroコンフィグスコープを使用して、追加のmacro:compileタスクを追加する議論がありました。

マクロソースをsrc/macro/scalaに配置し、macro:compilecompileの依存関係を設定することができます。

このような設定スコープを使用すると、マクロと通常のソースを同じプロジェクトに含めることができます。しかし、これはsbtのデフォルト設定ではなく、自分で追加する必要があります。私は必要な正確な呪文を忘れる。

関連する問題