使用Build.scala进行交叉编译时,如何为每个Scala版本设置不同的scalacOptions?

城市流浪者

使用Scala 2.10和SBT 0.13.2进行构建时,我想拥有-language:_,但是Scala 2.9无法识别。有一个关于scalacOptions交叉编译设置不同的问题带有SBT的条件scalacOptions),但有关build.sbt我正在使用,Build.scala因为我正在执行多项目构建。

我已经试过了:

  def scalacOptionsVersion(v: String) = {
    Seq(
      "-unchecked",
      "-deprecation",
      "-Xlint",
      "-Xfatal-warnings",
      "-Ywarn-dead-code",
      "-target:jvm-1.7",
      "-encoding", "UTF-8") ++ (
    if (v.startsWith("2.9")) Seq() else Seq("-language:_"))
  }

  override val settings = super.settings ++ Seq(
    ...,
    scalaVersion := "2.10.4",
    scalacOptions <++= scalaVersion(scalacOptionsVersion),
    crossScalaVersions := Seq("2.9.2", "2.10.4", "2.11.4"),
    ...
  )

但我得到一个错误:

[error] /Users/benwing/devel/lemkit/scala/project/build.scala:29: type mismatch;
[error]  found   : sbt.Def.Initialize[Equals]
[error]  required: sbt.Def.Initialize[sbt.Task[?]]
[error] Note: Equals >: sbt.Task[?], but trait Initialize is invariant in type T.
[error] You may wish to define T as -T instead. (SLS 4.5)
[error]     scalacOptions <++= scalaVersion(scalacOptionsVersion),
[error]                                    ^
[error] one error found

帮帮我?

Sksamuel

在SBT 0.13+中,它将起作用:

def scalacOptionsVersion(scalaVersion: String) = {
  Seq(
    "-unchecked",
    "-deprecation",
    "-Xlint",
    "-Xfatal-warnings",
    "-Ywarn-dead-code",
    "-target:jvm-1.7",
    "-encoding", "UTF-8"
  ) ++ CrossVersion.partialVersion(scalaVersion) match {
         case Some((2, scalaMajor)) if scalaMajor == 9 => Nil
         case _ => Seq("-language:_")
       }
}


val appSettings = Seq(
  scalacOptions := scalacOptionsVersion(scalaVersion.value)

  // other settings...
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Gradle交叉编译到Scala.JS

如何设置Android Build版本(使用Xamarin)?

如何交叉编译支持不同核心库API的Scala版本?

当副本包含空格时,如何使用bazel在docker build图像上交叉编译tensorflow-serving

Scala自类型可以在使用`extends`时进行编译吗?

如何使用SBT在build.scala中使用-D变量?

交叉编译时如何使用外部库?

如何使用go build -ldflags在编译时设置布尔变量

如何使用project / Build.scala生成java playproject?

当每个cc_library使用不同的交叉工具编译时,它们对其他cc_library的依赖

如何使用Dockerfile进行docker-build?

如何在进行交叉编译时切换/选择要使用的代码

使用 Clang 进行交叉编译时,如何实现本机级别的优化?

如何使用交叉编译器进行编译?

使用automake进行交叉编译时,重要的是什么?

使用Cloud Build从git进行连续部署

使用build.gradle进行部署

为每个Build Variant使用不同的manifestPlaceholder

Scala Play消息文件可以内联或重复使用build.sbt中的版本

使用'stack build --profile'时的依赖问题?

使用PhoneGap Build时应用无输出

使用TFS Build时的中介组件

如何在 c++ Autotools 项目中使用不同版本的 g++ 进行编译

在springboot2.0中使用@cacheable时如何为每个Redis缓存配置不同的ttl

使用Build> Profile时XCode 5无法编译更正

如何使用build.binaries目录变量

使用不同的环境设置运行ng build --prod

用sbt交叉编译Scala时如何具有不同的源代码?(MurmurHash中的更改)

如何为 npm run build 使用绝对路径