ada - GNAT编译库文件/如何强制重新编译所有

标签 ada gnat

我遇到一个错误,文件 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/

相关文章:

unit-testing - 使用 GNAT 测试时如何为函数添加第二个测试?

string - 将字符串传递给 C 函数

ada - 在 gprbuild 文件中设置 --create-missing-dirs 选项

ubuntu - 从 GPS 链接到 Ubuntu .a 模块库?

unicode - 如何在 GNAT 编程工作室中使用 unicode?

static - Ada 编译问题(寻找我没有的 adbs?)

ada - 如何启动一个进程并将其 PID 转换为整数或从整数转换?

containers - Ada:如何迭代私有(private) map ?

ada - FreeRTOS + GNAT Ada 编译库

scanf - 从 Ada 调用 scanf