6

SBTを使用して、Scala 2.8、2.9、および(できれば)2.10のクロスビルドを使用するプロジェクトを使用しています。-feature2.10のみでコンパイルする場合にオプションを追加したいと思います。

つまり、2.10.0より前のバージョンでコンパイルする場合、コンパイラオプションを次のように設定したいと思います。

scalacOptions ++= Seq( "-deprecation", "-unchecked" )

2.10.0以上のバージョンでコンパイルする場合:

scalacOptions ++= Seq( "-deprecation", "-unchecked", "-feature" )

これを達成する方法はありますか?

4

2 に答える 2

7

私はこれがそれを行うための迅速で簡潔な方法であることに気づきました:

scalaVersion := "2.10.0"

crossScalaVersions := "2.9.2" :: "2.10.0" :: Nil

scalacOptions <<= scalaVersion map { v: String =>
  val default = "-deprecation" :: "-unchecked" :: Nil
  if (v.startsWith("2.9.")) default else default :+ "-feature"            
}
于 2013-01-05T00:00:43.427 に答える
6

クロスビルドする場合、scalaVersionは、プロジェクトが現在ビルドされているバージョンを反映します。したがって、scalaVersionに応じて、トリックを実行する必要があります。

val scalaVersionRegex = "(\\d+)\\.(\\d+).*".r
...
scalacOptions <++= scalaVersion { sv =>
  sv match {
    case scalaVersionRegex(major, minor) if major.toInt > 2 || (major == "2" && minor.toInt >= 10) =>
      Seq( "-deprecation", "-unchecked", "-feature" )
    case _ => Seq( "-deprecation", "-unchecked" )
}
于 2012-09-27T19:16:46.303 に答える