我遇到一个错误,文件 X(在标准库中)需要重新编译,因为另一个文件已更改。它已经改变了,因为我不小心改变了它,但纠正了更改(通过 md5sum 检查确认)。然而时间戳已经改变,所以现在其他项目将因此而无法编译。缺少重新安装(这当然不是必需的,但可能),解决方案是什么?
我尝试在构建时将 -f
选项添加到 gprbuild
中以强制重新编译,并且得到了相同的结果。
确切的错误:
error: "a-direct.adb" must be recompiled ("a-calfor.ads" has been modified)
error: "a-calfor.adb" must be recompiled ("a-calfor.ads" has been modified)
error: "g-calend.adb" must be recompiled ("a-calfor.ads" has been modified)
...
最佳答案
当在用户项目上调用时,gprbuild 知道编译该项目(及其依赖项),而不是运行时。
我认为,AdaCore 的客户获得了重新编译运行时的支持,并且有 GPR 和 daunting Makefile在 GCC 来源中。
gnatmake 有一个开关-a
,它强制将运行时源进行任何必要的重新编译到您的对象目录中。我认为 gprbuild 不支持它,并且在任何情况下您都需要为所有项目调用它。
如果我是你,我会继续重新安装。
关于ada - GNAT编译库文件/如何强制重新编译所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66227227/