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

时间:2019-03-15 13:49:29

标签: mercury

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

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

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

1 个答案:

答案 0 :(得分:0)

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

[就像在C语言中一样,在Mercury中无法像在C语言中那样进行编译时定义],因为这是很少需要的功能,如果没有Mercury本身的特殊支持,则很容易实现。

....

[根据您的特定需求,从构建系统中输入版本号] 在其中包含名为version.m。的文件之类的文件

:-模块版本。

:-界面。   :-func version =字符串。

:-实施。   版本=“ @VERSION @”。

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