2016-09-23 62 views
2

我有一些代碼取決於宏調用。在我的情況下在類型T的字段宏碼進行迭代,並且遞歸地返回他們的名字:如何強制重新編譯調用宏的類?

object Foo{ 
    val bar:List[String] = MyMacroClass.fieldNames[Bar] 
} 

BarMyMacro每個在單獨的獨立的子項目定義。

現在,當我對Bar進行更改(如添加或刪除字段)時,如果我不手動清理並重新編譯,那麼列表將不會反映更改。

有沒有辦法告訴sbt重新編譯這種情況?

ps。被問及類似的問題herehere

+0

似乎是sbt的已知問題:https://github.com/sbt/sbt/issues/1729 – lapislazuli

回答

0

您可以使用dependsOn中的MyMacro強制每次更改Bar時重新編譯。類似於lazy val MyMacroProject = project.dependsOn(BarProject)

+0

嗨,感謝您的快速響應。不幸的是,這似乎並不奏效。這個解決方案對於一個非常通用的宏來說不是很好,它應該可以用於任何類型的T,但偶然的情況是宏子項目已經依賴於包含Bar的子項目。它仍然沒有辦法。 – lapislazuli

相關問題