gpt4 book ai didi

gnu - 如何使用 gnatmake 编译 spec _.ada 和 body .ada?

转载 作者:行者123 更新时间:2023-12-04 02:50:56 28 4
gpt4 key购买 nike

gnatmake xx.ada xx_.ada     
gcc -c -x ada xx.ada
xx.ada:44:14: warning: file name does not match unit name, should be
"xx.adb"
xx.ada:44:14: file "xx.ads" not found
gnatmake: "xx.ada" compilation error

尝试使用 gnatmake 编译..它不工作。

最佳答案

除非有一些非常非常重要的原因让您必须坚持该文件命名约定,否则如果您使用默认的 GNAT 约定会容易得多:规范文件被命名为 .ads,body文件 .adb.

事实上,当你说 gnatmake xx.ada 时,你会得到文件名不符合预期的警告,然后编译器继续;它看到 xx.ada 是一个包体,然后去寻找规范(在 xx.ads 中,因为你没有告诉它任何不同)并且可以找到它。

有一个实用程序 gnatname(参见 here),您可以在源代码上运行(gnatname *.ada 对我有用,只有 4 个文件)来生成一个“配置文件”gnat.adcgnatmake 首先读取它以明确告诉它哪个文件包含什么。我的测试结果是

pragma Source_File_Name
(Linked_List,
Body_File_Name => "linked_list.ada");
pragma Source_File_Name
(Lists,
Spec_File_Name => "lists_.ada");
pragma Source_File_Name
(Lists,
Body_File_Name => "lists.ada");
pragma Source_File_Name
(Linked_List,
Spec_File_Name => "linked_list_.ada");

或者,您可以在 GNAT Project Manager 中使用等效项通过编写项目文件,例如t.gpr 包含

project T is

package Naming is
for Spec_Suffix ("ada") use "_.ada";
for Body_Suffix ("ada") use ".ada";
end Naming;

end T;

并使用 gnatmake -P t.gpr 进行编译。

(较新版本的 GNAT 包括一个实用程序 gprbuild,它理解 .gpr 文件;gnatmake 将实际调用 gprbuild 如果它找到了,那么你实际上说的是 gprbuild -P t.gpr。)

关于gnu - 如何使用 gnatmake 编译 spec _.ada 和 body .ada?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55116658/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com