Conditional scalacOptions with SBT

前端 未结 2 712
囚心锁ツ
囚心锁ツ 2021-01-12 17:13

I am using a project with cross-build for Scala 2.8, 2.9 and (hopefully) 2.10, using SBT. I would like to add the -feature option when compiling with 2.10 only.

相关标签:
2条回答
  • 2021-01-12 17:44

    When cross-building, scalaVersion reflects the version your project is currently built against. So depending on scalaVersion should do the trick:

    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" )
    }
    
    0 讨论(0)
  • 2021-01-12 17:51

    I found this was quick and concise way of doing it:

    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"            
    }
    
    0 讨论(0)
提交回复
热议问题