Ada SPARK:gnatprove带有-gnat13选项无法识别?
我对Ada/SPARK很陌生。我试着从这里学习一些教程-- 假设我正在运行这里给出的ISQRT示例()。所有代码(Ada SPARK:gnatprove带有-gnat13选项无法识别?,ada,spark-ada,Ada,Spark Ada,我对Ada/SPARK很陌生。我试着从这里学习一些教程-- 假设我正在运行这里给出的ISQRT示例()。所有代码(*.ads和*.adb)都绑定为一个名为isqrt.gpr的项目,我正在运行的命令是-- :~$gnatprove-gnat13-p isqrt.gpr 我得到的结果是-- 本教程说,我需要向校准仪提供一个名为-gnat13的开关,这样校准仪就可以跳过一些溢出检查,但显然这个开关是不可接受的 有什么想法吗?gnatprove命令提供的“帮助”非常有用: $ gnatprove --
*.ads
和*.adb
)都绑定为一个名为isqrt.gpr
的项目,我正在运行的命令是--
:~$gnatprove-gnat13-p isqrt.gpr
我得到的结果是--
本教程说,我需要向校准仪提供一个名为-gnat13
的开关,这样校准仪就可以跳过一些溢出检查,但显然这个开关是不可接受的
有什么想法吗?gnatprove命令提供的“帮助”非常有用:
$ gnatprove --help
Usage: gnatprove -Pproj [files] [switches] [-cargs switches]
proj is a GNAT project file
files is one or more file names
-cargs switches are passed to gcc
...
并且所提到的gnatprove
开关都不是-gnat13
因此,您需要将开关传递给gnatprove
正在后台使用的编译器
有两种方法(至少):首先,使用-cargs
路线
gnatprove -P t1q4.gpr -cargs -gnato13
或者第二,在GPR中设置它(我使用了t1q4.GPR
)
(对象目录的
使用.build”
将中间文件隐藏在通常不可见的子目录中;gprbuild
和gnatmake
知道如何使用-p
标记创建所需的目录,但是gnatprove
不经告知就这样做了)我怀疑您的问题在于AdaCore网站上的文档正在持续开发中,SPARK工具本身也在持续开发中,您正在使用SPARK GPL 2014快照。文档可能正在发生变化,这就是为什么StackOverflow策略在问题中显式地包含有问题的源代码。没有什么值得一提的您还应该显示实际的错误消息。在本例中,问题不在于您的代码,而在于您调用gnatprove
的方式。尽管如此,如果您在此处发布代码、编译器命令和确切的错误消息,通常会帮助我们。@SimonWright it's Updateed.谢谢,但是我从哪里可以得到这些微妙之处的指南呢?主要的Spark教程讲的是在一个名为GPS的IDE中做所有事情,我不想运行它。我也找不到指南。GPS对这个问题没有帮助-但它确实提供了一个很好的突出显示问题的源代码行!
gnatprove -P t1q4.gpr -cargs -gnato13
project T1Q4 is
for Source_Files use ("t1q4.ads", "t1q4.adb");
for Object_Dir use ".build";
package Compiler is
for Default_Switches ("ada") use ("-gnato13");
end Compiler;
end T1Q4;