如何在Mercury中指定编译时间定义?
我想让构建系统从配置文件中读取版本号,并将其传递到模块中,以便通过谓词和函数进行访问。
例如,在C中,我会这样做: gcc -DVERSION="1.2.0",然后在源代码中使用新定义的宏版本。
发布于 2019-03-18 19:34:22
水星用户邮件列表上的Zoltan Somogyi回复道:
编译时定义,就像在C中一样,在Mercury中是不可能的,因为它是一种很少需要的功能,如果没有Mercury本身的特殊支持,很容易实现。
……
对于您的特定需求,从构建系统中推入版本号可以得到一个名为version.m.in的文件,其中包含
:-模块版本。
:-接口。:- func version = string。
:-实施。version = "@VERSION@“。
然后创建一个外壳或sed脚本,通过将@ version @替换为实际的版本字符串,从version.m.in构造version.m。如果您希望在没有人工干预的情况下更改版本字符串(例如,反映当前日期),则可以添加一个mmake规则,以便在适当的时间点自动从version.m.in构造version.m。
https://stackoverflow.com/questions/55184089
复制相似问题