Как мне указать время компиляции, определенное в Mercury?

#mercury

#mercury

Вопрос:

Как мне указать время компиляции, определенное в Mercury?

Я хотел бы, чтобы система сборки считывала номер версии из файла конфигурации и передавала его в модуль для доступа с помощью предикатов и функций.

Например, в C я бы сделал что-то вроде: gcc -DVERSION=»1.2.0″, а затем использовал бы вновь определенную ВЕРСИЮ макроса в исходном коде.

Ответ №1:

Золтан Сомоги из списка рассылки пользователей Mercury ответил:

[Определения времени компиляции, как и в C, в Mercury невозможны], потому что это та часть функциональности, которая редко требуется, чего легко достичь без специальной поддержки в самом Mercury.

….

[Для вашей конкретной потребности введите номер версии из системы сборки] Есть что-то вроде файла с именем version.m.in содержащий

:- версия модуля.

:- интерфейс. :- версия функции = строка.

:- реализация. версия = «@VERSION @».

а затем иметь сценарий оболочки или sed, который создает version.m из version.m.in заменив @VERSION@ на строку фактической версии. Если вы хотите, чтобы строка версии изменялась без вмешательства человека (например, для отражения текущей даты), вам следует добавить правило mmake для построения version.m из version.m.in автоматически в соответствующие моменты времени.