gpt4 book ai didi

sbt - 在 sbt 项目中编译 Scala 2.10-RC3 宏

转载 作者:行者123 更新时间:2023-12-04 14:06:42 25 4
gpt4 key购买 nike

我在我的项目中使用 SBT,最近我决定向它添加宏。

所以我按照这个项目中的例子:

https://github.com/adamw/scala-macro-debug/tree/15fc8af48a6e7772c44b726513949a8ac9c9e3b7

project/Build.scala我有这个:

object ScalaMacroDebugBuild extends Build {
import BuildSettings._

lazy val root: Project = Project(
"root",
file("."),
settings = buildSettings) aggregate (macros, src)

lazy val macros: Project = Project(
"macros",
file("macros"),
settings = buildSettings ++ Seq(
libraryDependencies <+= (scalaVersion)("org.scala-lang" % "scala-compiler" % _)))

lazy val src: Project = Project(
"src",
file("src"),
settings = buildSettings) dependsOn (macros)

}

我的目录结构是:
                     MyProject
src macros project build.sbt
main test Build.scala
scala java scala java

所以 SBT 一直在 src 下编译所有东西,而且效果很好。

但是当我编译宏目录中的文件时,它不能用于 src 目录中的文件,所以我得到一个编译错误。

我如何编译我的宏,然后让它们可用,以便使用它的项目可以找到它?

最佳答案

正常的源码目录是<project-base>/src/main/scala .在示例中,存在一个基目录为 MyProject/src/ 的项目。混淆事物。

首先是根项目,其基目录是MyProject从而从 MyProject/src/main/scala/ 获取其主要的 Scala 源代码. src子项目的基目录是 MyProject/src/并从 MyProject/src/src/main/scala/ 获取其来源(双 src/ 是故意的)。

因此,解决方案可能是重命名 src 的基目录。项目,然后将源代码放在预期的目录布局中。

您可以使用 show root/compile:sources , show src/compile:sources , show root/compile:source-directories等...查看sbt认为是源和源目录的内容。这可以帮助确认事情如您所愿,并洞察可能出现的问题。另见 inspect命令。

关于sbt - 在 sbt 项目中编译 Scala 2.10-RC3 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13744872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com