如何在Mercury中指定编译时间定义?
我希望构建系统从配置文件中读取版本号,并将其传递到模块中,以供谓词和函数访问。
例如,在C语言中,我将执行以下操作:gcc -DVERSION =“ 1.2.0”,然后在源代码中使用新定义的宏VERSION。
答案 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。