我正在开发一个构建系统,该系统长期以来一直存在不良做法和其他不良做法,并且我正在重新编写构建。涉及的语言是 C/C++、Fortran、Ada 和 Java,目前我坚持使用 GNU 风格的 makefile——尽管我们正在考虑其他替代方案,例如 SCons。
话虽如此,我正在寻找一些具体的建议——而不是“使用不同的构建系统”等形式的建议。
无论谁编写了我现在正在查看的特定 makefile,他都计划按顺序构建如下所示的 java 代码:
LIST_OF_JAVA_FILES = file1.java
LIST_OF_JAVA_FILES += file2.java
LIST_OF_JAVA_FILES += file3.java
...
LIST_OF_JAVA_FILES += fileN.java
all: ${LIST_OF_JAVA_FILES}
${LIST_OF_JAVA_FILES} : %.class : %.java
${JAVAC} ${CLASSPATH} ${<}
如果您执行串行构建,则可以正常工作。但是,一旦依赖项混入其中,问题就会变得更加严重。
- C/C++ 编译器具有用于生成依赖项的内置选项……Java 是否存在类似的工具?
- 是否有必要使用第三方工具(如 Jikes)来生成依赖项?
- 通常来说,如果一个团队使用 makefiles 来构建任何与 java 相关的东西,是否更典型的是调用 java 编译器一次列出
.java
一个命令行中的所有文件 -vs- 每个.class
文件的一个目标?- 如果这更常见,这是为了简单起见还是有更深层次的原因?
- 注意:我知道对于顺序构建,这将是更快的选择,但我想要一个答案来对并行构建进行经验测试