首先,我知道如何编写一个基本/中级的makefile。在我的 c++ 项目中,我使用了一个自动执行很多工作的 makefile。对我来说最重要的是它使用通配符自动检测所有源文件(它们总是在同一个文件夹中),使用它来预测所有目标文件的名称(和位置),并进行适当的编译。
最近我一直在尝试用我的 scala 项目达到同样的效果,但我遇到了两个障碍。
- 属于包的编译类文件存储在子目录中(如
com/me/mypack/
)。这是一个问题,因为 Make需要找到这些文件来检查时间戳(我不知道如何自动执行此操作)。 - 一些源文件(例如定义 a 的源文件
package object
)生成具有不同命名标准的类文件。同样,Make 需要知道这些类文件在哪里,而我不知道如何自动执行此操作。
这样做的结果是每次运行时都会重新编译“有问题的”源文件make
(scala 的长编译时间会加剧这种情况)。我想知道如何解决这个问题,而不必手动写出预期的类文件的整个列表。
编辑 作为一个额外的说明:我想避免将源文件放在子目录中。出于几个原因,我喜欢将它们全部保存在同一个目录中。