在Ada(GNAT)的编译时指定不同的平台特定包

Jos*_*osh 4 programming-languages cross-platform ada

我仍然是Ada编程世界的新手,请原谅我,如果这个问题很明显的话.

我正在寻找开发一个应用程序(在Ada中,使用2005版本中的功能)从串行端口读取,并基本上执行从外部设备接收的字符串和数字的操作.

现在我的意图是使用Florist和POSIX终端接口首先在Linux上完成所有的串口工作....我会进入Windows/MacOS /等......其他时间但是我想让这个选项保持打开状态.

无论我做什么,我都想遵循Ada最佳实践.所以不是像C下的条件编译那样的hack(我知道Ada也没有),我想知道如何从命令行指定包文件的变化(例如gnatmake)?

我现在唯一可以想到的是我可以将所有平台包命名为完全相同(即包名称Serial.Connector具有相同的文件名)并将它们放在项目存档中的不同文件夹中,然后在编译时指定目录/库使用-I参数查找文件并更改不同平台的目录名称.

这是我使用C/C++为GCC展示的方式......这仍然是Ada使用GNAT的最佳方式吗?

谢谢,-Josh

Mar*_*c C 5

这是处理这种情况的完全可接受的方式.如果可能的话,你应该有一个共同的包规范(或者如果适用多个规范的规范),所有特定于平台的东西都严格限制在相应的包体变体中.

(如果你确实想要沿着预处理器路径前进,那么可以使用一个名为gnatprep的GNAT预处理器,但我也不喜欢条件编译,所以我建议保留单独的子目录方法.)