在gprbuild文件中设置--create-missing-dirs选项

时间:2017-10-02 06:25:01

标签: ada gnat

有一个单独的目录来存储目标文件是有用的。但是,如果目录尚不存在,gprbuild会抱怨。我使用hg进行版本控制,它不允许你跟踪空目录(AFAIK也适用于git),但即使这样做,也很遗憾不得不弄乱存储库与空目录。 gprbuild有一个选项--create-missing-dirs(简称-p),它完全按照它在锡上的说法完成。这非常有用。但是,我想知道的是,是否有某种方法可以在.gpr文件中设置它。必须提醒我的用户使用-p选项进行编译,而不是只能运行gprbuild project,这是令人讨厌的。不幸的是,gprguild的文档有这样的说法:

  

默认情况下,GPRbuild会检查项目文件中指定的对象,库和exec目录是否存在。 Switch -p指示GPRbuild尝试创建缺少的目录。请注意,这些开关可以在主项目的包Builder中指定,但它们在那里是无用的,因为在评估Builder切换之前,目录已经存在或项目文件的处理失败,因为至少有一个缺失。目录

当然必须有办法做我正在描述的事情吗?

2 个答案:

答案 0 :(得分:7)

gprbuild 的最新版本(自2016年8月19日起,请参阅Git)支持Create_Missing_Dirs属性。

project Foo is
   for Create_Missing_Dirs use "True";
   ...

GNAT GPL 2017就是这样。

答案 1 :(得分:-1)

如果您要提交一个空目录,您可能不希望git / hg跟踪该目录中的文件。一种解决方案是将一个隐藏的*跟踪文件放在目录中,并添加规则以忽略所有其他文件。

对于hg.hgignore必须位于顶层(据我所知),因此您需要添加.keep文件(或其他一些描述名称) )在您要保留的目录中,并向.hgignore添加规则以忽略其他所有内容。

对于git,您可以在目录中放置一个.gitignore文件,并使用规则忽略所有文件。在这种情况下,.gitignore本身将是隐藏的跟踪文件。 (奖励:规则更容易编写)

  • 在隐藏以.开头的文件的系统上