【问题标题】:How do I specify compile time defines in Mercury?如何在 Mercury 中指定编译时间定义?
【发布时间】:2019-08-06 14:54:22
【问题描述】:

如何在 Mercury 中指定编译时间定义?

我想让构建系统从配置文件中读取版本号并将其传递到模块中,以供谓词和函数访问。

例如,在 C 语言中,我会执行以下操作:gcc -DVERSION="1.2.0",然后在源代码中使用新定义的宏 VERSION。

【问题讨论】:

    标签: mercury


    【解决方案1】:

    Mercury 用户邮件列表中的 Zoltan Somogyi 回复:

    [编译时间定义,如在 C 中,在 Mercury 中是不可能的],因为这是一个很少需要的功能,无需 Mercury 本身的特殊支持即可轻松实现。

    ....

    [根据您的特定需要,从构建系统中推入版本号] 有一个名为 version.m.in 的文件,其中包含

    :- 模块版本。

    :- 接口。 :- func 版本 = 字符串。

    :- 实施。 版本 = "@VERSION@"。

    然后有一个 shell 或 sed 脚本,通过将 @VERSION@ 替换为实际的版本字符串来从 version.m.in 构造 version.m。如果您希望版本字符串在没有人为干预的情况下更改(例如,反映当前日期),您可以添加一个 mmake 规则以在适当的时间点自动从 version.m.in 构造 version.m。

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 2021-06-30
      • 2011-03-02
      • 2021-04-22
      • 2011-03-03
      相关资源
      最近更新 更多