如何在 Mercury 中指定编译时间定义?
How do I specify compile time defines in Mercury?
如何在 Mercury 中指定编译时间定义?
我想让构建系统从配置文件中读取版本号,并将其传递到模块中以供谓词和函数访问。
例如,在 C 中,我会执行如下操作:gcc -DVERSION="1.2.0",然后在源代码中使用新定义的宏 VERSION。
Mercury 用户邮件列表中的 Zoltan Somogyi 回复:
[编译时定义,就像在 C 中一样,在 Mercury] 中是不可能的,因为它是一个很少需要的功能,在 Mercury本身。
.....
[根据您的具体需要,从构建系统中推送版本号]
有一个名为 version.m.in 的文件,其中包含
:- 模块版本。
:- 界面。
:- func version = string.
:- 实施。
版本 = "@VERSION@".
然后有一个 shell 或 sed 脚本,通过将 @VERSION@ 替换为实际版本字符串,从 version.m.in 构造 version.m。如果您希望版本字符串在没有人为干预的情况下发生变化(例如,以反映当前日期),您将添加一个 mmake 规则以在适当的时间点自动从 version.m.in 构造 version.m。
如何在 Mercury 中指定编译时间定义?
我想让构建系统从配置文件中读取版本号,并将其传递到模块中以供谓词和函数访问。
例如,在 C 中,我会执行如下操作:gcc -DVERSION="1.2.0",然后在源代码中使用新定义的宏 VERSION。
Mercury 用户邮件列表中的 Zoltan Somogyi 回复:
[编译时定义,就像在 C 中一样,在 Mercury] 中是不可能的,因为它是一个很少需要的功能,在 Mercury本身。
.....
[根据您的具体需要,从构建系统中推送版本号] 有一个名为 version.m.in 的文件,其中包含
:- 模块版本。
:- 界面。 :- func version = string.
:- 实施。 版本 = "@VERSION@".
然后有一个 shell 或 sed 脚本,通过将 @VERSION@ 替换为实际版本字符串,从 version.m.in 构造 version.m。如果您希望版本字符串在没有人为干预的情况下发生变化(例如,以反映当前日期),您将添加一个 mmake 规则以在适当的时间点自动从 version.m.in 构造 version.m。