在回答how to use multiple inline assertions in Frege之后,我学会了如何编译两个Frege模块A和B,其中B依赖于A:你必须编译B.如果给出了-make选项,编译器会发现B取决于在A上,将在源路径(-sp标志)上找到A,并将首先编译A然后编译B.
但是,我不能只将我关心的所有文件都提供给编译器。将和 B同时提供给编译器失败,并出现“循环依赖”错误。而且我也发现没有办法给编译器一个目录(它什么都没做)。
这看起来我必须知道依赖图的根,以便对所有需要编译的文件进行适当的编译。但
是否有编译器选项的组合,我可以让编译器编译源树中的所有文件?
答案 0 :(得分:2)
编辑:使用更新的编译器版本,您确实可以编译整个树:
java -jar fregec.jar -d classes/ -make directory1/ directory2/
就此而言,以下答案已经过时。
简短的回答是“不”。
答案很长:
main
函数的模块。可以使用-make选项一次编译所有这些,只要它们不相互依赖。似乎命令行编译器也需要这样的功能。
顺便说一下,我无法回溯你的“循环依赖”错误。我使用了以下命令:
java -jar ~/frege/fregec.jar -d bin -make -sp Real_World_Frege-master/ $(find . -type f -name '*.fr' -print)
事实上,只有当A导入B而B(或B导入的东西)导入A时,才会标记此错误。
答案 1 :(得分:2)