2016-03-05 50 views
4

我想指定一個與整個項目不同的文件編譯器選項。更具體一些,我需要啓用一些調試來弄清爲什麼宏在特定文件中失敗。如果我在全局範圍內更改選項,那麼整個項目將被重新編譯(併產生調試),這是我想避免的。如何爲文件分別指定scalacOptions

我該怎麼用sbt做到這一點?

+0

爲什麼不使用'scalac print'並傳遞該特定文件? –

+0

我也應該通過所有的依賴關係。 – ayvango

+0

你能指定更多你看到的錯誤嗎? – Edmondo1984

回答

3

無法給出僅適用於編譯單元某些文件的特殊編譯參數。

宏很難調試。現在可能的解決方案是:

  • Debug the code
  • println宏的代碼,sbt clean compile,你應該在控制檯中看到您的照片(這也適用於IDEA)。

好運

+0

@ som-snytt我刪除了「這就是爲什麼他們需要儘可能避免」,即使這很明顯,宏是一個應該避免的實驗性功能,甚至會被scala取代。元。 – Joan

2

使用SBT的漸進式編譯特性,你可以有以下解決方法:

  1. 使整個項目這個編譯器選項,
  2. 編譯整個項目(你會得到很多輸出,您現在可以忽略)
  3. 從控制檯執行touch <file with macro>.scala,或者只對該文件進行一些其他修改。
  4. 再次編譯。

現在只有單個感興趣的文件(以及可能依賴它的文件)將被重新編譯,並且將會有更少的調試輸出。

以上意味着您的代碼編譯成功。如果不是,那麼當它首​​次編譯成功時(例如,通過刪除某些在您感興趣的文件中編譯失敗的代碼),您就需要將其帶入狀態,然後轉到上面的第3步。

相關問題