3

我升级到 GNAT Community 2018(GNAT GPL 2017 一切正常)。我有这个项目文件:

with "opengl";

library project OpenGL.Soil is
   for Library_Name use "SoilAda";

   for Languages use ("ada", "c");

   for Source_Dirs use ("src/soil");

   -- snip compiler config
end OpenGL.Soil;

现在在 中src/soil,有几个.ads.adb文件以及.h.c文件。以前,这个项目文件编译了所有这些并在使用时将它们链接在一起就很好了。自 GNAT Community 2018 以来,此文件仅编译 Ada 源代码,而不编译 C 源代码。

我尝试过的事情:

  • 确保 GNAT 社区附带的 GCC 仍然支持编译 C。是的。
  • 明确定义的Naming包设置Spec_SuffixImplementation_SuffixC 到各自的文件结尾。
  • 明确指定Source_Files并将所有 Ada 和 C 文件放入其中。

无论我做什么,GPRBuild 在调用时都不会编译 C 文件(导致链接器错误)。即使明确指定了 C 文件,也没有错误或警告输出。

如何让 GPRBuild 再次编译 C 文件?

4

1 回答 1

5

原因是仍然存在来自先前编译器的 32 位目标文件。GPRBuild 没有重新编译这些,但也没有尝试链接它们(这会失败),调用gprclean -r项目并再次编译修复它。

于 2019-03-09T13:10:06.963 回答