Ada查找可执行位置

时间:2017-09-21 11:02:23

标签: executable ada

How do I find the location of the executable in C?相似,但在Ada。

我是否可以使用一个很好的包以跨平台方式确定可执行位置? (Windows和Linux)

Google上没有任何内容,或通过GNAT / Ada软件包查看

现有的套餐失败了,我该如何做呢?

2 个答案:

答案 0 :(得分:2)

Ada.Command_Line.Command_Name为您提供可执行文件的名称。在Linux上,这会在您调用程序时为您提供名称。由于您经常只使用ls并让shell搜索实际可执行文件的路径,因此您必须自己在Ada.Command_LineAda.Directories之上重新实现该功能。

答案 1 :(得分:1)

作为@egilhh comments,语言定义的方法是使用Ada.Directories提供的Current_Directory函数。

with Ada.Text_IO, Ada.Directories;

procedure PWD is
begin
   Ada.Text_IO.Put_Line(Ada.Directories.Current_Directory);
end PWD;

由于跨平台行为对您的用例至关重要,因此您需要对代表性目标进行测试。您可能还想研究相应的Ada.Directories实现。使用gnatkr确定相关的文件名。给定一个名为ADA_INC的环境变量,指向您的adainclude目录,

export ADA_INC=${ADA_HOME}/lib/gcc/…/adainclude

以下命令可让您查看相关来源:

view $ADA_INC/$(gnatkr Ada.Directories.ads)
view $ADA_INC/$(gnatkr Ada.Directories.adb)

请注意Current_Directory导入为每个支持的平台编译并随分发安装的C函数。相比之下,Containing_Directory明确地将Windows作为特殊情况处理。

最后,您可以通过导入合适的函数或调用SpawnExpect来实现任何cited方法,如Gem #54: Scripting Capabilities in GNAT (Part 2)

所示