2

首先,我知道如何编写一个基本/中级的makefile。在我的 c++ 项目中,我使用了一个自动执行很多工作的 makefile。对我来说最重要的是它使用通配符自动检测所有源文件(它们总是在同一个文件夹中),使用它来预测所有目标文件的名称(和位置),并进行适当的编译。

最近我一直在尝试用我的 scala 项目达到同样的效果,但我遇到了两个障碍。

  • 属于包的编译类文件存储在子目录中(如com/me/mypack/)。这是一个问题,因为 Make需要找到这些文件来检查时间戳(我不知道如何自动执行此操作)。
  • 一些源文件(例如定义 a 的源文件package object)生成具有不同命名标准的类文件。同样,Make 需要知道这些类文件在哪里,而我不知道如何自动执行此操作。

这样做的结果是每次运行时都会重新编译“有问题的”源文件make(scala 的长编译时间会加剧这种情况)。我想知道如何解决这个问题,而不必手动写出预期的类文件的整个列表。

编辑 作为一个额外的说明:我想避免将源文件放在子目录中。出于几个原因,我喜欢将它们全部保存在同一个目录中。

4

1 回答 1

10

对于 Scala,您应该使用sbtMaven 。这些是专为 Scala 和 Java 的工作方式而设计的,它们将更容易设置和使用。它们还提供了比 make 更多的功能。

这些工具用于各种各样的事情。编译是一件大事,但它们对于依赖管理也很重要。此外,sbt(可能还有 Maven?)会进行“增量编译”,因此只有已更改的类才会重新编译,从而加快编译速度。

我个人使用 sbt,但我认识喜欢 Maven 的人。

于 2012-05-24T05:58:50.003 回答